[Numpy-discussion] array.sum() slower than expected along some array axes?
Sat Feb 3 19:52:17 CST 2007
Keith Goodman wrote:
> On 2/3/07, Stephen Simmons <email@example.com> wrote:
>> Does anyone know why there is an order of magnitude difference
>> in the speed of numpy's array.sum() function depending on the axis
>> of the matrix summed?
>> To see this, import numpy and create a big array with two rows:
>> >>> import numpy
>> >>> a = numpy.ones([2,1000000], 'f4')
>> Then using ipython's timeit function:
>> Time (ms)
>> sum(a) 20
>> a.sum() 9
>> a.sum(axis=1) 9
>> a.sum(axis=0) 159
>> numpy.dot(numpy.ones(a.shape, a.dtype), a) 15
>> This last one using a dot product is functionally equivalent
>> to a.sum(axis=0), suggesting that the slowdown is due to how
>> indexing is implemented in array.sum().
> I don't know how much time this would account for, but a.sum(0) has to
> create a much larger array than a.sum(1) does.
However, so does sum(a) and numpy.dot().
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Numpy-discussion