为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2023-11-09 21:37:58
我有一个 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


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信