我正试着做如下的事情
import numpy as np
arr = np.array([0,1,2,3])
fn = lambda x: np.array([x/2,x*2])
res = np.apply_along_axis(fn,0,arr)
也就是说,我希望将np.apply_along_axis
与返回数组而不是单个值的函数一起使用。但是,这会导致以下错误。在
我希望结果相当于:
res = np.array([[0.0,0],[0.5,2],[1.0,4],[1.5,6]])
注意,我的实际用例比给定的fn
更复杂。我想知道是否有一种方法可以将np.apply_along_axis
与返回数组的函数一起使用,或者是否有一种不同的(numpythonic)方法来实现相同的功能。在
谢谢!在
这种在数组中应用常规Python函数的方法与
for
循环基本相同。即使使用NumPy函数调用函数,也不会很快。所以保持简单:或者,如果你关心性能:
^{pr2}$第二种方法要快得多,只要数组中的行数多于要应用的函数数。这是因为您只循环几次,使用NumPy矢量化代码将每个函数一次性应用于整个输入,而不是逐个循环输入行。在
我发现的一个解决方法是对结果进行叠加,使lambda返回1D数组而不是2D数组:
然后您可以根据需要重塑
res
相关问题 更多 >
编程相关推荐