Why is numpy.cumsum (along axis=0) so much slower than a simple loop? The same goes for numpy.add.accumulate
# cumsumtest.py import numpy as np def loopcumsum(a): csum = np.empty_like(a) s = 0.0 for i in range(len(a)): csum[i] = s = s + a[i] return csum npcumsum = lambda a: np.cumsum(a, axis=0) addaccum = lambda a: np.add.accumulate(a) shape = (100, 8, 512) a = np.arange(np.prod(shape), dtype='f').reshape(shape) # check that we get the same results print (npcumsum(a)==loopcumsum(a)).all() print (addaccum(a)==loopcumsum(a)).all() ipython session: In [1]: from cumsumtest import * True True In [2]: timeit npcumsum(a) 100 loops, best of 3: 14.7 ms per loop In [3]: timeit addaccum(a) 100 loops, best of 3: 15.4 ms per loop In [4]: timeit loopcumsum(a) 100 loops, best of 3: 2.16 ms per loop Dave Cook
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion