[英]Numpy array within a specific range
我有一個大約400,000個值的numpy數組z
。 z
的范圍是0 to 2.9
我想將此數組分為四個部分:
z1 = 0.0<z<=0.5
z2 = 0.5<z<=1.0
z3 = 1.0<z<=1.5
z4 = 1.5<z<=2.9
我一直在使用:
z1 = np.where(np.logical_and(z>0, z<=0.5))
z2 = np.where(np.logical_and(z>0.5, z<=1.0))
上面的似乎沒有給我z1
或z2
在所需范圍內(大約z1
應該是長度為100,000的數組,值的范圍為0<z<=0.5
!! 我已經嘗試過使用長度為100左右的簡單數組了而且有效。
我在這里做錯了什么? 還是有另一種方法將數組分為四個部分?
問題在於np.where()
返回索引。 要獲取值,您可以執行以下操作:
z1 = np.take(z, np.where(np.logical_and(z>0, z<=0.5))[0])
等等...
直接使用掩碼通過花式索引獲取值可能更快:
z1 = z[np.logical_and(z>0, z<=0.5)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.