当前位置:   article > 正文

list indices must be integers or slices, not list

list indices must be integers or slices, not list
def computeSSE(center_point, cluster):
    estimator = 0
    for i in cluster:
        if len(cluster[i]) != 0:
            for point in cluster[i]:
                estimator += (matrix[0][point] - center_point[i][0]) ** 2 + (matrix[1][point] - center_point[i][1]) ** 2
    return estimator
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

for i in lines:
for j in lines:
i and j iterate over the elements of lines, not the indices. That means i and j are always lists, entire lines of numbers.

If you want to go over the indices (usually you don’t, but it may be the best option here), you want

for i in range(len(lines)):
for j in range(len(lines[i])):
This is awkward by design, as the Python designers want people to default to iterating over the elements of a sequence.

Also, note that your loop tries to access elements of lines before the first row and before the first column. Perhaps you want to start your loops on the second row and column.

修改后

def computeSSE(centroids, cluster):
    estimator = 0
    for i in range(len(cluster)):
        if len(cluster[i]) != 0:
            for j in range(len(cluster[i])):
                estimator += (cluster[i][j][0] - centroids[i][0]) ** 2 + (
                        cluster[i][j][1] - centroids[i][1]) ** 2
    return estimator
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/642862
推荐阅读
相关标签
  

闽ICP备14008679号