比方说,我们有一个3行2列的矩阵,mat
,我想将列表what_functions_to_apply_list
的功能之一应用于每3行,对此我有定义。因此np.apply_along_axis
的输出应该是函数输出尺寸的3倍。
在没有矢量化循环的情况下如何做到这一点?
例如
def f1(inp1,inp2):
return out1, out2
其中
functions_dic = {'f1': func1, 'f2':func2, 'f3':func3}
what_functions_to_apply_list = ['f1','f1','f2']
funcs_inputs = [[inp11,inp12], [inp21,inp32], [inp31,inp32]]
mat = np.ones((3, 2))
np.apply_along_axis(what_functions_to_apply_list , 1, mat)
答案 0 :(得分:0)
将函数列表直接应用于数组的行:
In [418]: alist = [np.add, np.subtract, np.multiply]
In [419]: data = np.arange(6).reshape(3,2)
In [420]: [foo(*ab) for foo, ab in zip(alist, data)]
Out[420]: [1, -1, 20]