numpy布尔型索引

先创建一个names一维数组,再用numpy.random中的randn函数生成一个7*4数组:

>>names=np.array([“Bob”,”Joe”,”Will”,”Bob”,”Will”,”Joe”,”Joe”])
>>data=np.random.randn(7,4)


1.对names和字符串“Bob”的比较运算将会产生一个布尔型数组:

>>> names==”Bob”
array([ True, False, False,  True, False, False, False], dtype=bool)

2.将这个布尔型数组用于数组索引:

>>> data[names==”Bob”]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
       [ 0.28620158,  0.1481723 , -1.27040048,  0.29133364]])

3.将布尔型数组跟切片混合使用:

>>> data[names==”Bob”,2:]
array([[-0.78464202, -0.54631363],
       [-1.27040048,  0.29133364]])

4.也可用不等号(!=),负号对条件进行操作:

>>> names!=”Bob”
array([False,  True,  True, False,  True,  True,  True], dtype=bool)

>>> data[-(names==”Bob”)]
array([[-0.46722746, -0.4769322 ,  0.94609687,  0.51213101],
       [-1.34277909,  0.76173316, -0.8811425 , -0.88740766],
       [-0.17423198,  0.46599401,  0.21391178,  0.09850381],
       [-0.37063907, -0.88720874,  0.85973078,  1.22438856],
       [ 0.67792587,  0.259653  ,  1.11855236,  1.50720749]])

5.多种条件组合(&,|等)

>>> data[(names==”Bob”)|(names==”Will”)]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
       [-1.34277909,  0.76173316, -0.8811425 , -0.88740766],
       [ 0.28620158,  0.1481723 , -1.27040048,  0.29133364],
       [-0.17423198,  0.46599401,  0.21391178,  0.09850381]])
6.为了将data中的所有负值都设置为0,只需:
>>> data[data<0]=0
>>> data
array([[ 0.10298484,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.94609687,  0.51213101],
       [ 0.        ,  0.76173316,  0.        ,  0.        ],
       [ 0.28620158,  0.1481723 ,  0.        ,  0.29133364],
       [ 0.        ,  0.46599401,  0.21391178,  0.09850381],
       [ 0.        ,  0.        ,  0.85973078,  1.22438856],
       [ 0.67792587,  0.259653  ,  1.11855236,  1.50720749]])


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值