这是一个有点愚蠢的问题,但基本上我使用k-means将我的数据划分为不同的集群,这是为了一个班级项目btw。我已经完成了所有的工作,但是我必须将我的集群写到每个输入的文件中,以便对其进行测试。我的实际代码大约需要2-3分钟来运行,但它需要大约10分钟才能写入文件。我有10,000个输入/输出,目前我的运行时间大约是n^3。对于赋值而言,时间并不重要,但我想知道是否有人可以帮助我优化它,我知道有不同的Python迭代技巧,我不知道哪些技巧可以加快速度。
我的k是10,所以我有10个质心,基本上我选择数组,然后选择其中一个质心,检查它是否有数组,如果没有,我就移动到下一个质心,依此类推。我对每10,000个输入执行此操作,这需要很长时间。代码效率不是很高
file = open("image.txt", "w")
for point in array:
for x in range(len(centroids)):
for i in centroids[x]:
if np.array_equal(point,i):
file.write(str(x+1)+"\n")
file.close()
发布于 2019-04-10 08:45:13
好吧,让我试着清理一些东西。如果我说的任何话都不适用,请评论并让我知道。此外,如果你必须检查所有的东西,那么你可能无法简化计算。
with open("image.txt", "w") as file:
for point in array:
for centroid_index, centroid in enumerate(centroids):
for centroid_point in centroid:
if np.array_equal(point,centroid_point):
file.write(str(centroid_index+1)+"\n")
如果您能解释一下array
、centroids
的对象类型,以及您试图为我写到文件中的内容,那么我可以给出一些更具体的方法。
https://stackoverflow.com/questions/55602975
复制相似问题