python选择的数据点是一定的欧几里得距离,远离其他数据点



说我有一系列数据,其他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

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

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

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]

最新更新