相关疑难解决方法(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
查看次数

是否有内置的方法或函数来映射numpy.ndarray上的函数?

我想将一个函数应用于a的每个元素numpy.ndarray,如下所示:

import numpy
import math

a = numpy.arange(10).reshape(2,5)
b = map(math.sin, a)
print b
Run Code Online (Sandbox Code Playgroud)

但这给了:

TypeError: only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

import numpy
import math
a = numpy.arange(10).reshape(2,5)

def recursive_map(function, value):
    if isinstance(value, (list, numpy.ndarray)):
        out = numpy.array(map(lambda x: recursive_map(function, x), value))
    else:
        out = function(value)
    return out
c = recursive_map(math.sin, a)
print c
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有内置函数或方法来执行此操作?它似乎很简单,但我找不到它.我在用Python 2.7.

python numpy

1
推荐指数
1
解决办法
215
查看次数

标签 统计

numpy ×2

python ×2

cumsum ×1

scipy ×1