将多个函数应用于 numpy 数组的每一行
Apply multiple functions to each row of a numpy array
假设我们有一个 3 行和 2 列的矩阵 mat
,我想在每 3 行上应用列表 what_functions_to_apply_list
的一个函数,我有它们的定义.所以 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)
函数列表对数组行的直接应用:
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]
假设我们有一个 3 行和 2 列的矩阵 mat
,我想在每 3 行上应用列表 what_functions_to_apply_list
的一个函数,我有它们的定义.所以 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)
函数列表对数组行的直接应用:
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]