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維度代表兩者的維度嗎???>`; dimension is 2 but corresponding boolean dimension is 3

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]
IndexError: too many indices for array

將數組arr的shape變成5*5,可以索引到wind 

問題

arr[i.nonzero(),j.nonzero()]  # arr 是個二維數組
array([[ 0, 15, 25, 41]])
mask=a%3==0  # 邏輯運算
b[mask]=a[mask]  # 把a的mask對應地替換到b 中mask的位置

巨人的肩膀

numpy的布爾索引和花式索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章