numpy利用fancy indexing提取出想要的行

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]])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值