[SciPy-user] broadcasting elementwise on sparse matrix

Stéfan van der Walt stefan@sun.ac...
Wed Oct 1 09:58:38 CDT 2008


Hi Robin

2008/10/1 Robin <robince@gmail.com>:
> Is there any way to get broadcasted element wise operations on sparse matrices?
>
> I would like to do something like A * x if A was (n,n) array and x was
> a (n,) array. I saw the sparse matrices have a .multiply method, but
> it doesn't seem to broadcast in the same way as the standard
> multiplication, ie As.multiply(x) gives an "inconsistent shapes"
> error.
>
> The best I have is As.multiply(tile(x,(n,1))) although this has the memory
> overhead that is normally avoided with broadcasting. Is there an alternative?

You can broadcast over the indices, and then use them to individually
address the elements of the sparse matrix.  Not super-fast, but better
than nothing:

In [4]: a, b = np.broadcast_arrays([1,2,3], [[1,2,3], [4,5,6]])

In [5]: a
Out[5]:
array([[1, 2, 3],
       [1, 2, 3]])

In [6]: b
Out[6]:
array([[1, 2, 3],
       [4, 5, 6]])

Cheers
Stéfan


More information about the SciPy-user mailing list