numpy矩阵取出当中的子矩阵

numpy矩阵取出当中的子矩阵,第1张

今天记录一下使用numpy遇到的坑。
假设我们现在有一个numpy数组matrix,如果我们需要访问该数组的第i行第j列的元素,我们可以直接采用matrix[ i ][ j ],但现在我们如果想要取出其中的一个子矩阵该如何 *** 作呢?
本人最开始的愚蠢做法是在两个中括号里面分别使用步进表达式,例如我要取出第1行到第3行以及第第二列到第4列之间的子矩阵:

import numpy as np
matrix=np.array([[1,1,1,1,1],[0,0,0,0,0],[2,2,2,2,2],[3,3,3,3,3]])
print(matrix[0:3][1:4])

我们理想的输出是:

[[1 1 1]
 [0 0 0]
 [2 2 2]]

但实际上是

[[0 0 0 0 0]
 [2 2 2 2 2]]

这是因为matrix[0:3][1:4]会首先取出第1行到第三行得到:
[[1,1,1,1,1],[0,0,0,0,0],[2,2,2,2,2]]
然后再取出上述新矩阵的第2行到第4行,由于只有3行所以最终的输出为取出上述新矩阵的第二行到第三行,也就得到了我们的上述错误结果。
其实正确的解决办法很简单

#只需将
matrix[0:3][1:4]
#改为
matrix[0:3,1:4]
#即可

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/722863.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存