Python从大型numpy ndarray提取3*3子矩阵仅返回前三整行如何解决
Numpy二维数组3×3子矩阵提取问题解答
问题根源
连续两次使用[]做索引不符合numpy多维数组的切片规则:
- 第一步执行
mat[0:3]时,已经提取出原400×500数组的前三行,得到形状为(3, 500)的二维数组 - 第二步执行
[0:3]时,是对上述3行的数组再做行维度切片,最终返回结果和第一步完全一致,没有对列维度做任何限制,自然得不到3×3的子矩阵。
正确提取方式
numpy支持在同一个方括号内用逗号分隔不同维度的索引规则,同时指定行和列的切片范围即可:subset_matrix = mat[0:3, 0:3]
以上代码会直接提取行索引02、列索引02的3×3子矩阵,符合预期需求。
内容的提问来源于stack exchange,提问作者jaegarmaster176
相关产品推荐
相关产品推荐

