[SciPy-User] Dotting two sparse rows
Warren Weckesser
warren.weckesser at enthought.com
Thu Nov 10 08:01:28 EST 2011
On Thu, Nov 10, 2011 at 5:36 AM, Matt Henderson <matthen at gmail.com> wrote:
> Hi there,
>
> I need to dot two csr matrices with shapes (1, 25675), (1, 25675)
> together, giving a single number. These rows are extremely sparse- with
> around 20 non-zero entries each. What's the fastest way to do this? I know
> the following works:
>
> np.dot(a, b.T).todense()[0,0]
>
>
Looks like a.multiply(b).sum() is faster:
In [248]: a
Out[248]:
<1x30000 sparse matrix of type '<type 'numpy.float64'>'
with 81 stored elements in Compressed Sparse Row format>
In [249]: b
Out[249]:
<1x30000 sparse matrix of type '<type 'numpy.float64'>'
with 77 stored elements in Compressed Sparse Row format>
In [250]: %timeit np.dot(a, b.T).todense()[0,0]
1000 loops, best of 3: 470 us per loop
In [251]: %timeit a.dot(b.T).todense()[0,0]
1000 loops, best of 3: 408 us per loop
In [252]: %timeit a.multiply(b).sum()
10000 loops, best of 3: 182 us per loop
Warren
Cheers,
> Matt
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20111110/dfceb242/attachment.html>
More information about the SciPy-User
mailing list