将多个函数应用于numpy数组的每一行

时间:2019-03-26 21:17:57

标签: python function numpy vectorization

比方说,我们有一个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)

1 个答案:

答案 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]