[Numpy-discussion] Row-wise dot product?

josef.pktd at gmail.com josef.pktd at gmail.com
Mon Sep 7 12:07:32 EDT 2009


On Mon, Sep 7, 2009 at 10:09 AM, Hans-Andreas Engel<engelh at deshaw.com> wrote:
>> From: T J <tjhnson <at> gmail.com>
>> Is there a better way to achieve the following, perhaps without the
>> python for loop?
>>
>> >>> x.shape
>> (10000,3)
>> >>> y.shape
>> (10000,3)
>> >>> z = empty(len(x))
>> >>> for i in range(10000):
>> ...    z[i] = dot(x[i], y[i])
>> ...
>> _______________________________________________
>
> Nadav Horesh <nadavh <at> visionsense.com> writes:
>
>>
>> (x*y).sum(1)
>>
>>   Nadav
>>
>
>
> If you wish to avoid the extra memory allocation implied by `x*y'
> and get a ~4x speed-up, you can use a generalized ufunc
> (numpy >= 1.3, stolen from the testcases):
>
>   z = numpy.core.umath_tests.inner1d(x, y)

Thanks for the example. There are not many examples of generalized
ufuncs on the mailing list and it's easy to forget that they have been added.

Initially, I didn't find them in my numpy 1.3.0 install (AttributeErrors).
It seems they have to be explicitly imported:

import numpy.core.umath_tests

Josef

>
> Best,
> Hansres
>
>
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list