1 回答
![?](http://img1.sycdn.imooc.com/545850a00001fdd002200220-100-100.jpg)
TA贡献1780条经验 获得超4个赞
numpy的解决方案
首先准备数据
import numpy as np
x = np.array([[ 82, 210, 203, 234, 135, 92, 176, 146, 246, 35, 257, 227, 258,
132, 31, 160, 269, 24, 248, 274, 281, 279, 71, 21, 188, 163,
243],
[ 15, 16, 18, 18, 19, 21, 23, 29, 35, 47, 50, 53, 60,
64, 67, 69, 77, 88, 89, 91, 105, 115, 138, 175, 178, 205,
207]]).T
计算所有点对的距离
a,b = np.tril_indices(27, -1)
diss = np.linalg.norm(x[b] - x[a], axis=1)
找到距离小于阈值的点
distance = 10
near = x[np.unique(np.concatenate([b[diss < distance], a[diss < distance]]))]
然后我们可以绘制点
import matplotlib.pyplot as plt
plt.scatter(x[:,0], x[:,1])
plt.scatter(near[:,0], near[:,1]);
删除点
remove = np.delete(x,np.unique(np.concatenate([b[diss < distance], a[diss < distance]])), axis=0)
plt.scatter(remove[:,0], remove[:,1]);
添加回答
举报