I want to multiply a sparse matrix A, with a matrix B which has 0, -1, or 1 as elements. To reduce the complexity of the matrix multiplication, I can ignore items if they are 0, or go ahead and add the column without multiplication if the item is 1, or subs. if it’s -1. The discussion about this is here:
Random projection algorithm pseudo code
Now I can go ahead and implement this trick but I wonder if I use Numpy’s multiplication functions it’ll be faster.
Does anyone knows if they optimised matrix multiplication for such matrices? Or can you suggest something to speed this process up since I have a matrix 300000×1000.
Have you looked at
scipy.sparse? There’s no point in re-inventing the wheel, here. Sparse matricies are a fairly standard thing.(In the example, I’m using a
300000x4matrix for easier printing after the multiplication. A300000x1000matrix shouldn’t be any problem, though. This will be much faster than multiplying two dense arrays, assuming you have a majority of0elements.)This yields: