我有一个numpy数组R
维度(n,n,n,3)和一个函数f
,它将1-D向量带到标量。我需要一个与A
的关系为
R
A[i, j, k] = f(R[i, j, k, :])
如果没有三个for语句,我怎么能在numpy中做到这一点。
答案 0 :(得分:2)
理想情况下,您可以通过更改f
的实现来使用适当处理高维输入的技术来实现此目的。例如,您可以将np.sum(whatever)
更改为np.sum(whatever, axis=-1)
以获取最后一个轴而不是整个数组的总和。这将产生最有效的结果,但可能很难或不可能,具体取决于f
。
更慢,更简单的答案是np.apply_along_axis
:
A = np.apply_along_axis(f, -1, R)
这比循环更漂亮,但它可能不会更有效率。