python:numpy(4)

  • 高级索引

布尔型索引

可以通过比较运算符来产生一个布尔型数组。
对同样大小的布尔型数组,可以利用&(和)、|(或)、-(非)进行运算。

data = np.random.randn(7, 4)
print(data)
print(data > 0)
print((data > -1) & (data < 1))
[[ 0.59711287  0.35911118  0.80925994 -1.60744802]
 [ 1.4904879   0.1192616  -0.83902824  0.37876663]
 [-0.26166516 -0.49346625  0.18346839  0.70833643]
 [ 0.32048212 -0.69056052 -0.29403945 -0.14632815]
 [-0.08186285 -0.49594495  0.12816477  1.27712333]
 [ 0.44620341 -1.57771506 -0.78073316 -0.38668016]
 [-0.66192819 -1.30421999  1.00875952  1.0798795 ]]
[[ True  True  True False]
 [ True  True False  True]
 [False False  True  True]
 [ True False False False]
 [False False  True  True]
 [ True False False False]
 [False False  True  True]]
[[ True  True  True False]
 [False  True  True  True]
 [ True  True  True  True]
 [ True  True  True  True]
 [ True  True  True False]
 [ True False  True  True]
 [ True False False False]]

利用布尔型索引的功能,可以快速进行筛选。
定义一个名称数组,长度为7,并假设上述data中的每一行与名称数组中的名字一一对应。

names = np.array(['ben', 'tom', 'ben', 'jeremy', 'jeremy', 'tom', 'ben'])
print(names)
print(data[names == 'ben'])
print(data[(names == 'ben') | (names == 'tom')])
print(data[data > 0])
['ben' 'tom' 'ben' 'jeremy' 'jeremy' 'tom' 'ben']
[[ 0.59711287  0.35911118  0.80925994 -1.60744802]
 [-0.26166516 -0.49346625  0.18346839  0.70833643]
 [-0.66192819 -1.30421999  1.00875952  1.0798795 ]]
[[ 0.59711287  0.35911118  0.80925994 -1.60744802]
 [ 1.4904879   0.1192616  -0.83902824  0.37876663]
 [-0.26166516 -0.49346625  0.18346839  0.70833643]
 [ 0.44620341 -1.57771506 -0.78073316 -0.38668016]
 [-0.66192819 -1.30421999  1.00875952  1.0798795 ]]
[0.59711287 0.35911118 0.80925994 1.4904879  0.1192616  0.37876663 0.18346839 0.70833643 0.32048212 0.12816477 1.27712333 0.44620341
 1.00875952 1.0798795 ]
花式索引
#对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。
print(names[[4, 3, 2, 1]])
print(names[[-1, -2, -3, -4]])
print(data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值