python - NumPy/SciPy 中的广义累积函数?

标签 python numpy scipy cumsum

numpy 或 scipy(或其他一些库)中是否有一个函数可以将 cumsum 和 cumprod 的概念推广到任意函数。例如,考虑(理论)函数

cumf( func, array) 

func 是一个接受两个 float 并返回一个 float 的函数。特殊情况

lambda x,y: x+y 

lambda x,y: x*y 

分别是 cumsum 和 cumprod。例如,如果

func = lambda x,prev_x: x^2*prev_x 

我将其应用于:

cumf(func, np.array( 1, 2, 3) )

我愿意

np.array( 1, 4, 9*4 )

最佳答案

上面的 ValueError 仍然是使用 Numpy 1.20.1(使用 Python 3.9.1)的错误。

幸运的是,我们发现了一种使用强制转换的解决方法: 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=object).astype(int)
# array([1, 3, 6])

请注意,由于自定义操作适用于对象类型,它不会从 numpy 的高效内存管理中受益。因此,对于非常大的数组,该操作可能比不需要强制转换为对象的操作要慢。

关于python - NumPy/SciPy 中的广义累积函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828599/

相关文章:

python - Numpy转置乘法问题

python - 自己的pip python包导入不起作用

python - 如何检查 numpy 数组的所有元素是否都具有整数值?

python - 如何在 scipy.integrate.simps 或 numpy.trapz 之间做出选择?

python - 如何向量化这两个嵌套的 for 循环?

python - 如何将数组的元素转换为数字? Python

python - 如何用 Python 解决僵硬的问题?

python - 在Python中崩溃时显示消息?

Python:条形图 - 垂直标签 - 剪切

python - matplotlib 中是否有一个参数可以稍微调整条形图的指定位置?