【问题标题】:How to store distance values with labels into a matrix of distances?如何将带有标签的距离值存储到距离矩阵中?
【发布时间】:2017-11-04 16:23:19
【问题描述】:

我正在尝试将所有给定文档之间的距离存储到距离矩阵中。

这是我的代码:

    dists = [] #a matrix of distances
    i=0
    for row in self.matrix:
        current_row = row
        document_distances = []
        # build list with possibilities for every document in labels
        for label in self.labels:
            document_distances.append((1 - self.row_distance(current_row, label), label))

        dists[i] = document_distances #[(0.22529600444665132, 'Doc1'), (0.22952074233187614, 'Doc2'), (0.289625872768411, 'Doc3'), ...]
        i += 1
    print(dists)

但运行代码后出现以下错误:

IndexError: list assignment index out of range

谁能告诉我我应该改变什么才能让我的代码正常工作?

【问题讨论】:

    标签: python matrix distance-matrix


    【解决方案1】:

    不要这样做:

    dists[i] = document_distances
    

    这样做:

    dists.append(document_distances)
    

    【讨论】:

      【解决方案2】:

      您的代码有一些非常奇怪的语句:您遍历row,然后将其分配给current_row,等等。此外,您还要跟踪一些计数器。这些都不是必须的。

      最好的方法可能是使用列表推导

      dists = [(1 - self.row_distance(row, label), label)
                   for row in self.matrix
                   for label in self.labels]
      

      这将替换所有代码。

      或者如果你真的想要程序代码,你可以使用append

      dists = [] #a matrix of distances
      
      for row in self.matrix:
          document_distances = []
          for label in self.labels:
              document_distances.append((1 - self.row_distance(current_row, label), label))
      
          dists.append(document_distances)
      print(dists)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 2011-08-08
        相关资源
        最近更新 更多