数据分析(2):元素索引

1. 存取元素

 1.1 通过下标索引

a = np.arange(10)

a[5]
Out[5]: 5 # 下标从0开始

a[3:5]
Out[6]: array([3, 4]) # 通过范围索引,默认步长为1,不包括终值

a[:5]
Out[7]: array([0, 1, 2, 3, 4]) # 可以不指定初值

a[-1]
Out[8]: 9 # -1是最后一个元素的索引

a[:-1]
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8]) # 从第一个到最后一个,不包括终值

a[2:4]= 10, 11 # 可以通过索引赋值

a
Out[11]: array([ 0,  1, 10, 11,  4,  5,  6,  7,  8,  9])

a[1:-1:2]
Out[12]: array([ 1, 11,  5,  7]) # 从第一个到最后一个,步长2,不包括终值

a[1]
Out[13]: 1

a[::-1]
Out[14]: array([ 9,  8,  7,  6,  5,  4, 11, 10,  1,  0])  # 从第最后一个到第一个,包括终止

a[5:1:-2]
Out[15]: array([ 5, 11]) # 逆序,不包括终值

  不过这种方式获得的新数组与原数组共享同一块内存

  切记:必须是[],不能像matlab那样()

 1.2 通过列表获取元素

a = np.arange(10)

b = a[[0, 2, 4, 6, 8]]

b[0] = 1;b
Out[27]: array([1, 2, 4, 6, 8])

a
Out[28]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  这种方式获得的是独立的新数组,比较推荐

 1.3 使用布尔数组

a = np.arange(5,0,-1)

a[np.array([True,False,True,False,False])];a
Out[35]: array([5, 4, 3, 2, 1])

a = np.random.rand(10) # 生成10个(0,1)的随机数

a[a>0.5]
Out[37]: 
array([ 0.57716176,  0.90890871,  0.63922297,  0.63499173,  0.73557487,
        0.56008627,  0.72576258])

  通过布尔数组获得的也是独立的新数组,和matlab里的a(a>0)有点相似

  创建布尔数组可以np.array([1,0,1,0],dtype=np.bool),这样方便些

 

转载于:https://www.cnblogs.com/ajmd/p/6080149.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值