假设我有一个数据数组,另外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]