1. 程式人生 > >布林型索引

布林型索引

姓名陣列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. ]]