从3-D numpy数组中选择元素

时间:2019-01-09 09:33:44

标签: python arrays sorting

我有一个编号为array的numpy (512,3)数据,为此我为每一列分配了名称x,y,z。我有3个预定义的值,例如x_0y_0z_0

我想要3个新数组,其中仅附加满足条件x的{​​{1}},yz值。

有人可以提出一些解决方案吗?

1 个答案:

答案 0 :(得分:0)

为该随机数组提供预设尺寸:

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混淆)