python - 我们如何找到簇内两点之间的距离?
问题描述
我必须找到集群内两点之间的距离。我通过以下代码生成了集群:
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()
解决方案
取z
数组,它是64*64
与0 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)
推荐阅读
- mysql - 如何在sql中使用'inner join'和'order by'
- android - 在android中以编程方式连接wpa2企业wifi连接
- vb.net - 从 VB.NET 中的外部库中捕获异常
- angularjs - AngularJS - ng-maxlength
- javascript - Javascript 更改源仅执行第一行
- jquery - 通过 JQuery 打开 Json 对象 - HTML。ASP.NET 核心
- json - 将信息添加到 Angular 中的列表
- python - .data 在 pytorch 中仍然有用吗?
- python - 气流 dagbag_import_timeout - 使用 subdag 吗?
- list - 是否可以使用 AMP 侧边栏创建多级导航?