相关疑难解决方法(0)

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

在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)

python numpy scipy cumsum

18
推荐指数
2
解决办法
2214
查看次数

Python/numpy:最有效的方法是对数组中的n个元素求和,以便每个输出元素是前n个输入元素的总和?

我想编写一个函数,它将一个扁平数组作为输入,并返回一个等长的数组,该数组包含输入数组中前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"的方式来做到这一点?

在此先感谢您的帮助.

python arrays algorithm performance numpy

7
推荐指数
2
解决办法
1295
查看次数

标签 统计

numpy ×2

python ×2

algorithm ×1

arrays ×1

cumsum ×1

performance ×1

scipy ×1