Numpy,沿数组维度应用函数列表

Qub*_*bix 5 python arrays numpy function

我有一个类型的函数列表:

func_list = [lambda x: function1(input),
             lambda x: function2(input),
             lambda x: function3(input),
             lambda x: x]
Run Code Online (Sandbox Code Playgroud)

和形状数组 [4, 200, 200, 1](一批图像)。

我想沿第 0 轴按顺序应用函数列表。

编辑:重新表述问题。这相当于上面的。说,而不是数组,我有一个由 4 个相同数组组成的元组,形状为 (200, 200, 1),我想在第一个元素上应用 function1,在第二个元素上应用 function2,等等。这可以在没有的情况下完成吗? for 循环?

cs9*_*s95 3

您可以使用以下方法迭代函数列表np.apply_along_axis

import numpy as np
x = np.ranom.randn(100, 100)
for f in fun_list:
    x = np.apply_along_axis(f, 0, x)
Run Code Online (Sandbox Code Playgroud)

基于OP的更新

假设您的函数和批次大小相同:

batch = ... # tuple of 4 images  
batch_out = tuple([np.apply_along_axis(f, 0, x) for f, x in zip(fun_list, batch)])
Run Code Online (Sandbox Code Playgroud)

  • 是否可以避免 for 循环? (4认同)