在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) 我想将一个函数应用于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.