【问题标题】:Python Select data points which are a certain Euclidean distance away from other data pointsPython选择与其他数据点相距一定欧几里德距离的数据点
【发布时间】:2019-02-14 16:52:56
【问题描述】:

假设我有一个数据数组,以及对应于空间中每个数据点的 x、y 和 z 位置的其他 3 个数组

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

现在,我想获取满足某些条件的数据点的子集。

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

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

什么是执行此操作的有效方法?

【问题讨论】:

标签: python numpy euclidean-distance


【解决方案1】:

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

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2020-09-15
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多