import numpy as np import sys from math import * import matplotlib.pyplot as pl def INITC(kk,xd): nn=np.zeros([kk],dtype=np.int) cli=np.zeros([ndata],dtype=np.int) d1=np.zeros([ndata],dtype=np.float) d2=np.zeros([ndata],dtype=np.float) dr=np.zeros([ndata],dtype=np.float) di=np.zeros([kk,ndata],dtype=np.float) for i in range(0,ndata): d1[i]=1.0e10 nn[0]=np.random.randint(0,ndata,1) # ndata nos random number from 0 to kk-1 for k in range(1,kk): ck=xd[nn[k-1],:] for i in range(0,ndata): d2[i]=sqrt(np.sum((xd[i,:]-ck[:])**2)) for i in range(0,ndata): dr[i]=np.amin([d1[i],d2[i]]) nn[k]=np.argmax(dr) d1=dr for k in range(0,kk): for i in range(0,ndata): di[k,i]=sqrt(np.sum((xd[i,:]-xd[nn[k],:])**2)) for i in range(0,ndata): cli[i]=np.argmin(di[:,i]) return cli def MAIN(mcol,ndata,kk,itmax,xd): cl=np.zeros([ndata],dtype=np.int) clr=np.zeros([ndata],dtype=np.int) ck=np.zeros([mcol],dtype=np.float) xk=np.zeros([ndata,mcol],dtype=np.float) dis=np.zeros([kk,ndata],dtype=np.float) kkk=0 cl=INITC(kk,xd) # cl=np.random.randint(0,kk,ndata) # ndata nos random number from 0 to kk-1 for iii in range(0,itmax): kkk=kkk+1 iflag=0 for k in range(0,kk): n=-1 for i in range(0,ndata): if cl[i]==k: n=n+1 xk[n,:]=xd[i,:] if 0