如何用独立索引数组选取Numpy三维堆叠数组的值?
Numpy三维数组索引问题解决方案
正确索引方式
要获取8组二维索引对应的所有通道值,你需要将piece拆分为两个独立的一维数组,分别对应stack的行、列轴索引:
- 提取行索引:
rows = piece[:, 0] - 提取列索引:
cols = piece[:, 1] - 执行索引:
extraction = stack[rows, cols, :]
此时extraction的形状为(8, 14),包含8*14=112个值,完全符合预期。
错误方法原因分析
你之前尝试的两种方法都触发了Numpy的广播索引,导致维度不符合预期:
stack[tuple(piece), :]:将piece转为元组后,每个元素是长度为2的行索引对,Numpy会对每组行索引取整行数据,因此得到(8,2,2606,14)的形状。stack[piece, :]:直接用二维数组piece索引前两个轴,同样触发广播,生成多余维度。
内容的提问来源于stack exchange,提问作者TornadoEric
相关产品推荐
相关产品推荐

