python - 使用列表从数组的numpy数组中提取元素
问题描述
这应该是基本的,但是现在我的头撞墙了一段时间。
我有一个数组数组(16 x 16 of 128 x 128 子数组),例如
a.shape
(16, 16, 128, 128)
我还有一份感兴趣的指数列表
print(indices)
[[2, 4], [3, 11], [6, 3], [9, 1], ......]
我想提取与列表中的索引对应的子数组。因此,如果传递单个索引的值,则可以正常工作,例如
b = a[2, 4]
print(b.shape)
(128, 128)
但是,如果我尝试使用列表索引执行此操作,我不会得到相同的结果:
b = a[[indices[0]]]
print(b.shape)
(2, 16, 128, 128)
我得到了一个 2 x 16 的子数组数组,这是我不想要的。任何帮助表示赞赏!
解决方案
一种简单的解决方法:
b = a[indices[0][0], indices[0][1]]
print(b.shape)
# (128, 128)