[Numpy-discussion] array.sum() slower than expected along some array axes?

Robert Kern robert.kern@gmail....
Sat Feb 3 19:52:17 CST 2007


Keith Goodman wrote:
> On 2/3/07, Stephen Simmons <mail@stevesimmons.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[0], 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().

-- 
Robert Kern

"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 mailing list