Python Numpy,沿数组维度应用函数列表
我有一个类型的函数列表:Python Numpy,沿数组维度应用函数列表,python,arrays,function,numpy,Python,Arrays,Function,Numpy,我有一个类型的函数列表: func_list = [lambda x: function1(input), lambda x: function2(input), lambda x: function3(input), lambda x: x] 以及一组形状[42002001](一批图像) 我想沿着第0轴按顺序应用函数列表 编辑:重新表述问题。这相当于上述情况。比方说,我没有数组,而是有一个由4个相同数组组成的元组,
func_list = [lambda x: function1(input),
lambda x: function2(input),
lambda x: function3(input),
lambda x: x]
以及一组形状[42002001](一批图像)
我想沿着第0轴按顺序应用函数列表
编辑:重新表述问题。这相当于上述情况。比方说,我没有数组,而是有一个由4个相同数组组成的元组,形状为(200,200,1),我想在第一个元素上应用function1,在第二个元素上应用function2,等等。这可以在没有for循环的情况下实现吗 您可以使用
np迭代函数列表。沿轴应用:
import numpy as np
x = np.ranom.randn(100, 100)
for f in fun_list:
x = np.apply_along_axis(f, 0, x)
根据OP的更新
假设您的函数和批大小相同:
batch = ... # tuple of 4 images
batch_out = tuple([np.apply_along_axis(f, 0, x) for f, x in zip(fun_list, batch)])
我尝试了@Coldspeed的答案,它确实有效(所以我会接受它),但我发现了一个替代方法,没有使用for循环:
result = tuple(map(lambda x,y:x(y), functions, image_tuple))
编辑:忘记添加tuple(),谢谢@Coldspeed有可能避免for循环吗?@Qubix如果有办法,这将是一个很好的功能。但我不确定是否有。只是为了理解,您想将其应用于特定的行吗?轴还是整个矩阵?这些函数是转换每个元素还是像sum/max函数那样提供单个输出?如果使用Python3,不要忘记将tuple()。