[英]pure numpy expression for selecting same-length subarrays with different starting indices from 3-D array
[英]Selecting Elements from a 3-D numpy array
我有一個名為data的numpy array
,其形狀為(512,3)
,為此,我為每一列分配了名稱x,y,z
。 我有3個預定義值,例如x_0
, y_0
和z_0
。
我想要3個新數組,其中僅附加那些x
, y
和z
值,它們滿足sqrt((x_0-x)^2+(y_0-y)^2+(z_0-z)^2) <= 2000
。
誰能提出一些解決方案?
鑒於此隨機數組具有您的預設尺寸:
myArray = np.random.rand(512,3) * 1000
在切片numpy數組時,您可以通過索引來做到這一點:
myNewArray = myArray[100:120,1:3]
甚至有條件的情況下 例如,如果要去除所有大於500的值,則可以執行以下操作:
myNewArray = myArray[myArray<=500]
(閱讀:通過檢查myArray並僅獲取myArray小於或等於500的那些條目來創建myNewArray)。
在您的情況下,條件要復雜一些,但邏輯是相同的:
為了...
x_0 = 1000
y_0 = 1500
z_0 = 2000
myNewArray = myArray[np.sqrt((x_0 - myArray[:,0])**2 + (y_0 - myArray[:,1])**2 + (z_0 - myArray[:,2])**2) <= 2000]
...在我的隨機情況下,對myArray
進行了過濾,使得myNewArray
的形狀為(286L, 3L)
。 它們只是滿足條件的那些條目。
(我使用列索引而不是名稱x,y,z,以避免與x_0,y_0和z_0混淆)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.