簡體   English   中英

特定范圍內的塊狀數組

[英]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)) 

上面的似乎沒有給我z1z2在所需范圍內(大約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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM