【发布时间】:2016-10-14 02:24:55
【问题描述】:
我的以下代码绝对正确,我什至得到了输出,但是 centroids_listoflists 没有出现在变量资源管理器中,我也无法通过 print(centroids_listoflists) 回忆它。
import numpy as np
data = np.random.choice(2,size=(10, 5))
centroids=data[np.random.choice(data.shape[0], 2)]
#We have random binary data; here 10 observation vectors with length 5
#Out of these data we choose randomly 2 centroids to work with
print ("Here are the centroids:")
print (centroids)
print ("Here is the data:")
print (data)
distance_array =np.full((data.shape[0],2),data.shape[1])
distance_array[:,1]=0
distance_array=distance_array.astype(np.int)
#determine the hamming distance to each centroid and save the smallest one
def compare(centroids,data):
for a in range(data.shape[0]):
for b in range(centroids.shape[0]):
distance = 0
for i in range(data.shape[1]):
if (data[a][i] != centroids[b][i]):
distance +=1
else:
distance +=0
if (distance <= distance_array[a,0]):
distance_array[a,0] = distance
distance_array[a,1] = b
else:
pass
compare(centroids,data)
print ("Here are the distances:")
print (distance_array)
#create a LookupTable which tells me which centroid contains which vectors and with what distance
def create_centroids_listoflists(data,distance_array,centroids):
centroids_listoflists = [ [] for i in range(centroids.shape[0])]
for a in range(len(centroids_listoflists)):
for b in range(len(distance_array)):
if (a == distance_array[b,1]):
centroids_listoflists[a].append((distance_array[b,1],data[b]))
else:
pass
print(centroids_listoflists)
print ("LookupTable for centroid,data and distance:")
create_centroids_listoflists(data,distance_array,centroids)
如果你能告诉我为什么它不起作用,我会很高兴...... 我认为函数create_centroids_listoflists的定义部分有问题。
谢谢!
【问题讨论】:
标签: listview python-3.x variables numpy