如何向量化一个函数,该函数的参数是numpy中的向量

时间:2016-02-19 01:04:47

标签: python numpy vectorization

我有一个numpy数组R维度(n,n,n,3)和一个函数f,它将1-D向量带到标量。我需要一个与A的关系为

的新数组R
A[i, j, k] = f(R[i, j, k, :])

如果没有三个for语句,我怎么能在numpy中做到这一点。

1 个答案:

答案 0 :(得分:2)

理想情况下,您可以通过更改f的实现来使用适当处理高维输入的技术来实现此目的。例如,您可以将np.sum(whatever)更改为np.sum(whatever, axis=-1)以获取最后一个轴而不是整个数组的总和。这将产生最有效的结果,但可能很难或不可能,具体取决于f

更慢,更简单的答案是np.apply_along_axis

A = np.apply_along_axis(f, -1, R)

这比循环更漂亮,但它可能不会更有效率。