在多个数组的列上应用函数

时间:2019-04-26 11:53:41

标签: python arrays numpy

我有一个函数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使用这种大小的数组是否有(显着)更有效的方式?

0 个答案:

没有答案