在numpy或scipy(或其他一些库)中是否存在将cumsum和cumprod的概念概括为任意函数的函数.例如,考虑(理论)函数
cumf( func, array)
Run Code Online (Sandbox Code Playgroud)
func是一个接受两个浮点数的函数,并返回一个浮点数.特殊情况
lambda x,y: x+y
Run Code Online (Sandbox Code Playgroud)
和
lambda x,y: x*y
Run Code Online (Sandbox Code Playgroud)
分别是cumsum和cumprod.例如,如果
func = lambda x,prev_x: x^2*prev_x
Run Code Online (Sandbox Code Playgroud)
我将它应用于:
cumf(func, np.array( 1, 2, 3) )
Run Code Online (Sandbox Code Playgroud)
我想要
np.array( 1, 4, 9*4 )
Run Code Online (Sandbox Code Playgroud) 我想编写一个函数,它将一个扁平数组作为输入,并返回一个等长的数组,该数组包含输入数组中前n个元素的总和,n - 1输出数组的初始元素设置为NaN.
例如,如果数组有十个elements = [2, 4, 3, 7, 6, 1, 9, 4, 6, 5]
,n = 3那么结果数组应该是[NaN, NaN, 9, 14, 16, 14, 16, 14, 19, 15].
我想出了一个方法来做到这一点:
def sum_n_values(flat_array, n):
sums = np.full(flat_array.shape, np.NaN)
for i in range(n - 1, flat_array.shape[0]):
sums[i] = np.sum(flat_array[i - n + 1:i + 1])
return sums
Run Code Online (Sandbox Code Playgroud)
是否有更好/更有效/更"Pythonic"的方式来做到这一点?
在此先感谢您的帮助.