(內容來自《利用python進行資料分析》)
先建立乙個names一維陣列,再用numpy.random中的randn函式生成乙個7*4陣列:
>>names=np.array(["bob","joe","will","bob","will","joe","joe"])
>>data=np.random.randn(7,4)
1.對names和字串「bob」的比較運算將會產生乙個布林型陣列:
>>> names=="bob"
array([ true, false, false, true, false, false, false], dtype=bool)
2.將這個布林型陣列用於陣列索引:
>>> data[names=="bob"]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
[ 0.28620158, 0.1481723 , -1.27040048, 0.29133364]])
3.將布林型陣列跟切片混合使用:
>>> data[names=="bob",2:]
array([[-0.78464202, -0.54631363],
[-1.27040048, 0.29133364]])
4.也可用不等號(!=),負號對條件進行操作:
>>> names!="bob"
array([false, true, true, false, true, true, true], dtype=bool)
>>> data[-(names=="bob")]
array([[-0.46722746, -0.4769322 , 0.94609687, 0.51213101],
[-1.34277909, 0.76173316, -0.8811425 , -0.88740766],
[-0.17423198, 0.46599401, 0.21391178, 0.09850381],
[-0.37063907, -0.88720874, 0.85973078, 1.22438856],
[ 0.67792587, 0.259653 , 1.11855236, 1.50720749]])
5.多種條件組合(&,|等)
>>> data[(names=="bob")|(names=="will")]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
[-1.34277909, 0.76173316, -0.8811425 , -0.88740766],
[ 0.28620158, 0.1481723 , -1.27040048, 0.29133364],
[-0.17423198, 0.46599401, 0.21391178, 0.09850381]])
6.為了將data中的所有負值都設定為0,只需:
>>> data[data<0]=0
>>> data
array([[ 0.10298484, 0. , 0. , 0. ],
[ 0. , 0. , 0.94609687, 0.51213101],
[ 0. , 0.76173316, 0. , 0. ],
[ 0.28620158, 0.1481723 , 0. , 0.29133364],
[ 0. , 0.46599401, 0.21391178, 0.09850381],
[ 0. , 0. , 0.85973078, 1.22438856],
[ 0.67792587, 0.259653 , 1.11855236, 1.50720749]])
numpy布林型索引
先建立乙個names一維陣列,再用numpy.random中的randn函式生成乙個7 4陣列 names np.array bob joe will bob will joe joe data np.random.randn 7,4 1.對names和字串 bob 的比較運算將會產生乙個布林型陣列...
Python筆記 NumPy中的布林型索引使用舉例
import numpy as np 建立乙個 3 x 3 的 ndarray 包含從 0 到 8 的整數 x np.arange 9 reshape 3,3 print 初始的 x n x 選擇在x中大於5的元素 print 選擇在x中大於5的元素 x x 5 選擇在x中 小於等於3 的元素 pr...
Numpy的array的布林型索引與賦值
names np.array bob joe will haha data np.randn 2,2 1 可使用names bob 來判斷array中的值是否與bob相同 names bob array true,false,false,false dtype bool 2 可使用names bob...