[英]Numpy assignment of 3D array values using 2D index array
我有一个 3D numpy 零数组,维度为 CxHxW(在本例中,C=4、H=2 和 W=3):
A = np.array([[[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0]]
[[0, 0, 0],
[0, 0, 0]]
[[0, 0, 0],
[0, 0, 0]]])
我还有一个二维索引数组,维度为 HxW,这样数组中的每个值都是 [0, C-1] 之间的有效索引
B = np.array([[2, 3, 0],
[3, 1, 2]])
有没有一种使用矢量化的快速方法来修改数组 A,使得 A[B[i][j]][i][j] = 1,对于所有有效的 i, j?
A = np.array([[[0, 0, 1],
[0, 0, 0]],
[[0, 0, 0],
[0, 1, 0]]
[[1, 0, 0],
[0, 0, 1]]
[[0, 1, 0],
[1, 0, 0]]])
谢谢!
看起来您正在寻找put_along_axis :
np.put_along_axis(A, B[None,...], 1, 0)
请注意,第二个参数需要与第一个参数具有相同的维数,这就是使用B[None,...]
而不是B
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.