用Python取np.array中某几行某几列
这个问题源于对于NumPy中索引和切片的学习,发现书上和教程中只提到了对于某行的索引,但是没有提到对于数组中某几列某几列的索引应该如何完成。将下面的矩阵看成是一个3x3的数组,那么如果我怎么才能得到这个矩阵的某个子矩阵呢?
(1)
1
2
3
4
5
6
7
8
9
\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \tag{1}
147258369(1)
首先我们先回顾一下NumPy中的索引是如何完成的。对于一维数组的索引,大体上与Python中的列表相似,可以通过取得某个元素的值,同时也可以进行数值变更。
import numpy as np
x_1 = np.array([1,2,3,4,5,6,7,8,9]) #创建二维数组
x_1[1] #提取一维数组中某个元素
x_1[1:3] #提取第2到4个元素
对于二维数组来说,使用同样的方法提取到的就是一维数组而不是标量了,那么怎么才能提取np.array的某几行某几列的元素呢?大致的思路是先取得我们想要的行数据,再取得我们想要的列数据。仍旧拿上面的矩阵来举例,如果我们想取得第1、3行第2、3列的数组子集,那么我们可以先取得第1、3行的数据,之后再取得第2、3列的数据。
(2)
2
3
8
9
\begin{matrix} 2 & 3 \\ 8 & 9 \end{matrix} \tag{2}
2839(2)
import numpy as np
X_2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
E = [0,2] #定义行数
F = [1,2] #定义列数
X_3 = X_2[E] #先取出需要的行
X_3 = X_3[:F] #再出去需要的列
print(X_3)
结果如图所示:
array([[2, 3],
[8, 9]])