I have
- M: a floating-point sparse matrix (
csr_matrixin scipy) of shape p*n, where p and n are about 1 million each. - M': another floating-point sparse matrix of shape p'*n', where p' > p, and n'>n.
- IndexP: a vector of indexes, of shape 1*p with p unique unsigned integers no larger than p'
- IndexN: a vector of indexes, of shape 1*n with n unique unsigned integers no larger than n'
How can I transform the following loop into a fast sparse matrix array operation
for all i in range(n) and j in range (p) such that M[i,j]!=0:
M'[IndexP[i], IndexN[j]]= M[i,j]
Example:
Assume
M is
[ [0 2] [3 0] ]
IndexP is
[9,100]IndexN is
[50,30]M' is a sparse matrix such that
M'.shape=(200,200)
Then the loop above will assign M'[9,30]=2, M'[100, 50]=3 (and M' is 0 elsewhere).