python_数据分析_numpy基础使用

布尔索引

  • 对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行注意:布尔数组的长度必须与目标数组对应的的长度一致,否则,会出现维数不匹配

轴对应OR Fails

arr=np.arange(2)
boo=np.array([True,False,True])
arr[boo]
# 报错
IndexError: boolean index did not match indexed array 
along dimension 0

`<布尔索引和索引数组在0维度不匹配??? 0维度代表两者的维度吗???>
In [28]: arr
Out[28]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23],
       [24, 25, 26, 27]])
       
# 在此基础上,我们还可以添加常规的索引和切片操作
In [38]: arr[names == 'Ben',3]  # 先提取出属于BEN的钱,再选择第三列数据
Out[38]: array([ 3, 11, 27])

In [39]: arr[names == 'Ben',1:4] #..., 切片操作
Out[39]: 
array([[ 1,  2,  3],
       [ 9, 10, 11],
       [25, 26, 27]])

花式索引

arr = np.array([['zero','one','two','three','four'],['wind']])
arr[1,0]==>arr[0][1]

mask=a%3==0  # 逻辑运算
b[mask]=a[mask]  # 把a的mask对应地替换到b 中mask的位置

如何选择一维数组的多个元素

b  # array([1, 2, 3, 4])
b[[0,3]]  #array([1, 4]),同理可得,当二维数组如此写时,就是提取相应的行

巨人的肩膀

numpy的布尔索引和花式索引

猜你喜欢

转载自blog.csdn.net/sinat_40701582/article/details/106148906