首页 > 解决方案 > 我们如何找到簇内两点之间的距离?

问题描述

我必须找到集群内两点之间的距离。我通过以下代码生成了集群:

X = np.arange(0,10.2,0.16)
Y = np.arange(0,10.2,0.16)
A = np.arange(0,2, 0.005) 
x, y = np.meshgrid(X, Y)
z = np.zeros(x.shape)

x0 = X.mean()
y0 = Y.mean()
b_center1 = [2,8]
b_center2 = [6,2]
r1=0.1*X.max()
r2=0.1*X.max()

for i in range(1, len(X)):
    for j in range(1, len(Y)):
        dist = pdist(np.array([[X[i],Y[j]],b_center1]))
        if (dist[0] < r1):
            z[i][j]=1
        dist = pdist(np.array([[X[i],Y[j]],b_center2]))
        if (dist[0] < r2):
            z[i][j]=1

fig = plt.figure(figsize=(12,10))
plt.scatter(x, y, z, cmap='viridis', edgecolor='k')
plt.gca().set_aspect('equal', adjustable='box')
plt.draw()
plt.xticks([0,1,2,3,4,5,6,7,8,9,10])
plt.yticks([0,1,2,3,4,5,6,7,8,9,10])
plt.show()

这是我获得的集群

d 是我必须找到的距离

标签: pythongeometrycluster-analysis

解决方案


z数组,它是64*640 and 1. 获取 x_index, y_index 其中z==1

np.where(z == 1)
(array([ 7,  7,  7,  7,  7,  ...),
 array([47, 48, 49, 50, 51, ...]))

所以可以看出,对于x=7,对于y=47,z=1,y=48,y=50等。所以我们要计算和之间的距离(7,47)(7,48) 所以,距离是Y[48] - Y[47]Y[49] - Y[48]

print(Y[48] - Y[47])
>>> 0.15999999999999925 # i.e. around 0.16

这仅仅是因为你的行距是0.16,你的点被 0.16 分开,所以你根本不需要计算。:p

X = np.arange(0,10.2, 0.16)

Y = np.arange(0,10.2, 0.16)

A = np.arange(0,2, 0.005)


推荐阅读