布林型索引
姓名陣列names為一個一維的字元陣列。 儲存資料的陣列data使用 np.random.randn()自動生成一些正態分佈的隨機資料的二維陣列,
import numpy as np # 建立一個儲存姓名的一維陣列 names = np.array(['Jame', 'Bob', 'Jack','Bob']) print (names) # 建立一個隨機生成的資料陣列4行3列 data = np.random.randn(4,3) print (data) # 輸出names陣列條件為Bob下的布林型資料 print ('1\n',names=='Bob') # 將data與names陣列條件關聯輸出條件資料 print ('2\n',data[names=='Bob']) # 利用切片索引,擷取部分資料顯示 print ('3\n',data[names=='Bob', 1:]) # 輸出非Bob的布林型陣列 print ('4\n',names != 'Bob') # 顯示非Bob的data資料行 print ('5\n',data[names != 'Bob']) # 輸出names陣列中是Bob或Jack的布林型陣列 mask = (names == 'Bob') | (names == 'Jack') print ('6\n',mask) # 顯示符合條件的data陣列資料行 print ('7\n',data[mask]) # 輸出非Bob的布林型陣列 print ('8\n',names != 'Bob') # 顯示非Bob的data資料行 print ('9\n',data[names != 'Bob']) # 將所有data資料陣列中的負值設定為0 data[data < 0] = 0 print ('10\n',data) # 將所有names為Bob的對應data資料行的值設定為8 data[names == 'Bob'] = 8 print ('11\n',data)
[‘Jame’ ‘Bob’ ‘Jack’ ‘Bob’] [[ 1.04452379 0.91702063 -1.29690981] [-1.0423991 0.17055314 0.39822974] [-0.02278227 0.50280484 0.13473932] [-0.2123447 0.85195153 0.15564582]] 1 [False True False True] 2 [[-1.0423991 0.17055314 0.39822974] [-0.2123447 0.85195153 0.15564582]] 3 [[0.17055314 0.39822974] [0.85195153 0.15564582]] 4 [ True False True False] 5 [[ 1.04452379 0.91702063 -1.29690981] [-0.02278227 0.50280484 0.13473932]] 6 [False True True True] 7 [[-1.0423991 0.17055314 0.39822974] [-0.02278227 0.50280484 0.13473932] [-0.2123447 0.85195153 0.15564582]] 8 [ True False True False] 9 [[ 1.04452379 0.91702063 -1.29690981] [-0.02278227 0.50280484 0.13473932]] 10 [[1.04452379 0.91702063 0. ] [0. 0.17055314 0.39822974] [0. 0.50280484 0.13473932] [0. 0.85195153 0.15564582]] 11 [[1.04452379 0.91702063 0. ] [8. 8. 8. ] [0. 0.50280484 0.13473932] [8. 8. 8. ]]