【发布时间】:2019-03-26 21:17:56
【问题描述】:
假设我们有一个 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)
【问题讨论】:
-
你不能。应用这样的自定义函数必然需要调用 Python,它将以
for-loop speed 运行 -
apply_along_axis不适合这种用途。首先,第一个参数是一个函数,而不是函数列表。即使使用正确的函数,它也不是显式迭代的更快替代方案。它不是一个“无循环矢量化”工具。 -
请添加示例数据。
标签: python function numpy vectorization