[SciPy-User] Elementwise products of dense and sparse matrices

Jaakko Luttinen jaakko.luttinen at iki.fi
Thu Feb 16 13:09:53 EST 2012


Hi!

I am trying to compute elementwise products of dense and sparse
matrices. The products work for two dense matrices or for two sparse
matrices but the product of a dense and a sparse matrix does not work.
See the code below:

>>> import numpy as np
>>> import scipy as sp
>>> A = sp.sparse.csc_matrix(np.identity(5))
>>> B = np.asmatrix(np.ones((5,5)))
>>> np.multiply(A,A)
<5x5 sparse matrix of type '<class 'numpy.float64'>'
	with 5 stored elements in Compressed Sparse Column format>
>>> np.multiply(B,B)
matrix([[ 1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.]])
>>> np.multiply(B,A)
NotImplemented
>>> np.multiply(A,B)
matrix([[  (0, 0)	1.0
   (1, 1)	1.0
   (2, 2)	1.0
   (3, 3)	1.0
   (4, 4)	1.0,
           (0, 0)	1.0
   (1, 1)	1.0
   (2, 2)	1.0
   (3, 3)	1.0
   (4, 4)	1.0,
.......
           (0, 0)	1.0
   (1, 1)	1.0
   (2, 2)	1.0
   (3, 3)	1.0
   (4, 4)	1.0]], dtype=object)

So elementwise B*A is not implemented and A*B gives some horrible matrix
with dtype=object.

The A*B or B*A product can be computed as
A.multiply(B)
but it would be more convenient if np.multiply could handle these
situations.

Can this be considered as a bug or missing feature or is there some
rationale behind this?

Thanks for your help!
Best,
Jaakko



More information about the SciPy-User mailing list