On Fri, May 22, 2015 at 5:39 PM, Mathieu Blondel <math...@mblondel.org>
wrote:

> Hi,
>
> I often need to compute the equivalent of
>
> np.diag(np.dot(A, B)).
>
> Computing np.dot(A, B) is highly inefficient if you only need the diagonal
> entries. Two more efficient ways of computing the same thing are
>
> np.sum(A * B.T, axis=1)
>
> and
>
> np.einsum("ij,ji->i", A, B).
>
> The first can allocate quite a lot of temporary memory.
> The second can be quite cryptic for someone not familiar with einsum.
> I assume that einsum does not compute np.dot(A, B), but I haven't verified.
>
> Since this is is quite a recurrent pattern, I was wondering if it would be
> worth adding a dedicated function to NumPy and SciPy's sparse module. A
> possible name would be "diagdot". The best performance would be obtained
> when A is C-style and B fortran-style.
>

Does your implementation use BLAS, or is just a a wrapper around einsum ?

David
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to