Python选择与其他数据点保持一定欧几里德距离的数据点

问题描述 投票:0回答:1

假设我有一个数据数组,另外3个数组对应于空间中每个数据点的x,y和z位置

data = np.random.random(10000)
x = np.random.random(10000)
y = np.random.random(10000)
z = np.random.random(10000)

现在,我想获得符合某些标准的数据点的子集。

具体来说,我想要数据点的子集 a)具有大于某个阈值t1的值

b)大于距离d远离数值点大于t2的数据点

这样做的有效方法是什么?

python numpy euclidean-distance
1个回答
0
投票

我会使用普通矩阵乘法并与平方距离进行比较:

data = np.random.random(10000)
x = np.random.random(10000)
y = np.random.random(10000)
z = np.random.random(10000)
position = np.vstack((x,y,z)).T
t1 = 0.5
t2 = 0.3
dmin = 0.1

m1 = data>t1
m2 = (np.matmul(position[m1], position[data>t2].T) > dmin**2).all(axis=1)
data_filtered = data[m1][m2]
© www.soinside.com 2019 - 2024. All rights reserved.