繁体   English   中英

使用 2D 索引数组对 3D 数组值进行 Numpy 分配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM