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

使用索引矩阵检索值的 Pythonic 方法?

使用索引矩阵检索值的 Pythonic 方法?

慕盖茨4494581 2021-06-16 09:22:47
我有一个 h-by-w-by-3 numpy 数组A和另一个 h-by-w-by-2 numpy 数组B,它告诉我A在每个 (h, w) 位置从哪里获取值。用C(h-by-w-by-3)表示结果矩阵。天真,我可以C = np.zeros(A.shape)for i in range(B.shape[0]):    for j in range(B.shape[1]):        C[i, j, :] = A[B[i, j, 0], B[i, j, 1], :]但我相信有更高效、更 Pythonic 和更快的方式!
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

确实有:


>>> import numpy as np

>>> 

>>> h, w = 4, 6

>>> 

>>> A = np.random.randint(0, 100, (h, w, 3))

>>> B = np.random.randint(0, h*w, (h, w, 2)) % [h, w]

>>> 

>>> C = np.zeros(A.shape)

>>> for i in range(B.shape[0]):

...     for j in range(B.shape[1]):

...         C[i, j, :] = A[B[i, j, 0], B[i, j, 1], :]

... 

>>> 

>>> C2 = A[(*np.moveaxis(B, 2, 0),)]

>>> np.all(C == C2)

True


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号