我有一个函数f(a, b, c)
,该函数将3个不同长度的向量作为参数,并返回一个1D数组(与参数a
相同的长度)。我也有三个2D数组(A, B, C
),它们的dtype
不同,一个维数相同(N
),而另一个维数对于这三个数组都不同。
我想以最有效的方式将f
沿其长度方向不同的二维数组应用于2D数组,以便f
被称为一列(或行,如果转置有任何区别) )。
幼稚的方法类似于沿着相同的轴压缩2D数组,并在每个数组中包含一列的3个元组上进行迭代(例如,调用f
N
次)。与N = 3
:
A = np.arange(9).reshape(3, 3)
B = np.arange(12).reshape(4, 3)
C = np.arange(15).reshape(5, 3)
result = np.array([f(a, b, c) for a, b, c in zip(A.T, B.T, C.T)])
在我的情况下,实数N
是〜30K,而数组的其他维度在5到〜1000之间变化。
使用纯Python或numpy
使用这种大小的数组是否有(显着)更有效的方式?