我有一个 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]]]) 谢谢你!
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
您似乎正在寻找put_along_axis:
np.put_along_axis(A, B[None,...], 1, 0)
请注意,第二个参数需要与第一个参数具有相同的维数,这就是为什么B[None,...]
使用 而不是B
。
添加回答
举报
0/150
提交
取消