找了半天,以為numpy的where函數像matlab 的find函數一樣好用,能夠返回一個區間內的元素索引位置。結果沒有。。(也可能是我沒找到)
故自己寫一個函數,找多維數組下的,在某個開區間的元素位置
import numpy as np
def find(arr,min,max): pos_min = arr>min pos_max = arr<max pos_rst = pos_min & pos_max return np.where(pos_rst == True)#where的返回值剛好可以用[]來進行元素提取 a=np.arange(10).reshape(2,5) pos=find(a,a>3,a<=7)print(a[pos])#where的返回值剛好可以用[]來進行元素提取
改進版本,接近matlab語法
def find(arr,pos_min,pos_max): #pos_min = arr>=min #pos_max = arr<max pos_rst = pos_min & pos_max return np.where(pos_rst == True)#where的返回值剛好可以用[]來進行元素提取
python的numpy where的真正用法,繞了一個大彎
pos=np.where( (a>=3) & (a<8)) #非常要注意這個括號 沒有括號估計內部執行順序不對,搗騰不出來的,具體原因可評論留言print (a[pos])
改進版本,接近matlab語法
以上這篇python numpy元素的區間查找方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答