對於乙個numpy陣列,有的時候我們想選取或者剔除某些符合條件的元素值,卻突然發現除了一些特定的函式,如numpy.minimum()等,或者乙個巢狀迴圈之外束手無策。其實這裡有乙個trick1,可以使**有效而簡潔。
讓我們來到乙個場景中:我們有乙個名為saliency的灰度影象陣列,用來表示一張中受關注程度的不同。為了增強視覺化效果,我們需要過濾掉陣列中數值過小的元素,讓其等於0,於是我們可以這麼做:
>>>
print saliency.shape
(227,227)
>>> idx = saliency < 0.0001
# or some other threshold value
>>> saliency[idx] = 0
# other operations ...
簡單寫,可以寫作
>>> saliency[saliency < 0.0001] = 0
# other operations ...
我們來看看saliency < 0.0001到底生成了什麼:
>>>
print saliency < 0.0001
[[ true
true
true ..., true
true
true]
[ true
true
true ..., true
true
true]
[ true
true
true ..., true
true
true]
...,
[ true
true
true ..., true
true
true]
[ true
true
true ..., true
true
true]
[ true
true
true ..., true
true
true]]
是乙個邏輯陣列。
>>>
print img.shape
(227,227,3)
>>> img[img > 200, 0] = 200
可能有人會想到,能否用這個trick來處理諸如 saliency > 0.0001 & saliency < 0.001的元素。我試了一下,這個技巧繼續外推:
# note that brackets are necessary!
saliency[(saliency>0.0001)&(saliency<0.001)] = 0
需要注意的是,list型別的變數並不支援上面所說的技巧。
↩
Python知識快速過濾 一
最新的版本 python 3.x後的版本安裝可以直接配置環境變數,無須手動配置 linux下xshell配置 path path user local python3 bin python3 windows下 命令列 set path path location 安裝之後,可以再shell中執行py...
Python知識快速過濾 二
一 number型別 複數型別complex 包含real和imag兩個屬性 內建方法 abs x 返回數值的絕對值,x可以為int,float,bool和complex,其他型別的資料會報錯 pow x,y z 相當於math.pow x,y z round x,b 奇進偶棄存在精度問題,盡量不要...
NumPy快速入門
python 2.7 ipython 4.1.2 in 1 from numpy import in 2 yuanzu 4,5,6 in 3 ll array yuanzu in 4 ll out 4 array 4,5,6 in 5 pylist 0,1,2 in 6 jj array pylis...