Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy,沿数组维度应用函数列表_Python_Arrays_Function_Numpy - Fatal编程技术网

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()。