import numpy as np
import math
n=10
m=3
x=([[85,82,88],
[86,89,82],
[65,99,69],
[78,80,81],
[82,84,83],
[66,85,71],
[90,88,92],
[97,94,99],
[88,83,85],
[98,87,74]])
print("原数组为:\n")
print(x)
for j in range (0,m):
max=x[1][j]
min=x[1][j]
for i in range (0,n):
if x[i][j]<min:
min=x[i][j]
if x[i][j]>max:
max=x[i][j]
for i in range (10):
x[i][j]=round((x[i][j]-min)/(max-min),2)
print("\n规范化后的数组为:\n",x)
counti=n
for l in range (n-1):
d=[]
for i in range (0,counti):
a=[]
for j in range (0,counti):
s=0
for k in range (0,m):
s=s+math.pow(x[i][k]-x[j][k],2)
b=round(math.sqrt(s),2)
a.append(b)
d.append(a)
print("距离矩阵d为:")
for i in range(counti):
print(d[i])
dmin=10.0
for i in range(counti):
for j in range(counti):
if((i!=j)and(d[i][j]<dmin)):
dmin=d[i][j]
if(i<j):
y=i
z=j
else:
z=i
y=j
print("最小距离为:%0.2f"%dmin)
print("第%s次聚类为第%s类与第%s类进行聚类"%(n-counti+1,y+1,z+1))
if (y<z):
d[y][z]=0
else:
d[z][y]=0
for j in range(m):
x[y][j]=round((x[y][j]+x[z][j])/2,2)
for i in range(z,counti-1):
for j in range(m):
x[i][j]=x[i+1][j]
counti=counti-1
print('第%s次聚类后的规范化数组为:'%(n-counti))
for i in range(counti):
print(x[i])