我有一个编号为array
的numpy (512,3)
数据,为此我为每一列分配了名称x,y,z
。我有3个预定义的值,例如x_0
,y_0
和z_0
。
我想要3个新数组,其中仅附加满足条件x
的{{1}},y
和z
值。
有人可以提出一些解决方案吗?
答案 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混淆)