簡體   English   中英

從3-D numpy數組中選擇元素

[英]Selecting Elements from a 3-D numpy array

我有一個名為data的numpy array ,其形狀為(512,3) ,為此,我為每一列分配了名稱x,y,z 我有3個預定義值,例如x_0y_0z_0

我想要3個新數組,其中僅附加那些xyz值,它們滿足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.

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