如何将二维numpy数组元素作为另一个numpy数组的索引取值
用二维Numpy数组作为多维度索引的实现方法
你只需要将二维数组a转换为元组后传入索引即可,这是因为Numpy在接收元组作为索引参数时,会自动将元组的每个元素对应到数组的不同维度进行高级索引,完全符合你需要的效果。
正确实现代码
import numpy as np # 你的原数组 a = np.array([ [1, 2], [0, 2], ]) b = np.random.randn(5, 5) # 替换硬编码索引的写法 c = b[tuple(a)]
结果验证
你可以和硬编码的结果做一致性校验:
c_hardcode = b[[1, 2], [0, 2]] print(np.array_equal(c, c_hardcode)) # 输出为True,说明两者结果完全一致
补充场景
如果你的二维数组a的结构是每行存储一个坐标点(即a = [[行索引1, 列索引1], [行索引2, 列索引2]]),只需要先对a做转置再转元组即可:
# 示例a结构为每行一个坐标 a = np.array([[1,0], [2,2]]) c = b[tuple(a.T)]
内容的提问来源于stack exchange,提问作者SdahlSean
相关产品推荐
相关产品推荐

