In [2]: arr = np.empty((8, 4))
In [3]: arr
Out[3]:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
In [4]: arr = np.empty((8, 4))
In [5]: for i in range(8):
...: arr[i] = i
...:
In [6]: arr
Out[6]:
array([[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.],
[4., 4., 4., 4.],
[5., 5., 5., 5.],
[6., 6., 6., 6.],
[7., 7., 7., 7.]])
In [7]: arr[:, [1, 3]] # 可以提取出第2、4行的8 * 2矩阵
Out[7]:
array([[0., 0.],
[1., 1.],
[2., 2.],
[3., 3.],
[4., 4.],
[5., 5.],
[6., 6.],
[7., 7.]])
对于pandas,可以使用iloc完成对特定列的提取,在利用.values属性就可以提取出来成为ndarray:
In [69]: frame = pd.DataFrame(np.arange(16).reshape((4, 4)), index = list('abcd'), columns = list('ABCD'))
In [70]: frame
Out[70]:
A B C D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
In [71]: frame.iloc[:, [1, 2]]
Out[71]:
B C
a 1 2
b 5 6
c 9 10
d 13 14
In [74]: frame.iloc[:, [1, 2]].values
Out[74]:
array([[ 1, 2],
[ 5, 6],
[ 9, 10],
[13, 14]])