numpy高級索引


布爾值索引

name_arr = np.array(["bob","joe","will","bob","joe","will","joe"])
rnd_arr = np_random.randn(7,4)
print(rnd_arr)
print(name_arr == "bob") #[ True False False  True False False False]
print(rnd_arr[name_arr == "bob",2])  #[-0.39080416  0.39002854]   根據布爾值進行索引
mask_arr = (name_arr == 'bob') | (name_arr == 'will')
print(mask_arr)#[ True False  True  True False  True False]
print(rnd_arr[mask_arr])

 

整數數組索引

用數組索引可以索引多個行或者多個列

for i in range(8):
    arr[i] = i
# print(arr)
# print(arr[[4,3,0,6]])
# print(arr[[-3,-5,-7]])
arr = np.arange(32).reshape((8, 4))
print(arr)
print(arr[[1, 5, 7, 2], [0, 3, 1, 2]]) # 打印arr[1, 0]、arr[5, 3],arr[7, 1]和arr[2, 2]
print(arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]])  # 1572行的0312列
print(arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]) # 可讀性更好的寫法

 

 

 

數組轉換

#--------數組轉換
arr = np.arange(15).reshape((3,5))
print(arr)
print(arr.T)
print(np.dot(arr,arr.T))   #矩陣乘法

#高維數組轉換
a = np.arange(16).reshape((2,2,4))
#根據維度轉換
# tanspose 維度本是0,1,2,3順序往下排,我們可用transpose改變順序
# 例如2,2,4 變為 4,2,2
print(a)
print(a.shape)
print(a.transpose((2,0,1)))
print(a.transpose((2,0,1)).shape)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM