generalized cumulative functions in NumPy/SciPy?

前端 未结 2 551
一个人的身影
一个人的身影 2020-12-01 14:34

Is there a function in numpy or scipy (or some other library) that generalizes the idea of cumsum and cumprod to arbitrary function. For example, consider the (theoretical)

2条回答
  •  眼角桃花
    2020-12-01 14:49

    The ValueError above is still a bug using Numpy 1.17.2 (with Python 3.7.3).

    Luckily a workaround was discovered that uses casting: https://groups.google.com/forum/#!topic/numpy/JgUltPe2hqw

    import numpy as np
    uadd = np.frompyfunc(lambda x, y: x + y, 2, 1)
    uadd.accumulate([1,2,3], dtype=np.object).astype(np.int)
    # array([1, 3, 6])
    

    Note that since the custom operation works on np.object, it won't benefit from the efficient memory management of numpy. So the operation may be slower than one that didn't need casting to object for extremely large arrays.

提交回复
热议问题