Как сохранить значения расстояний с метками в матрице расстояний?
Я пытаюсь сохранить расстояния между всеми данными документами в матрице расстояний.
Это мой код:
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
Может кто-нибудь сказать мне, что я должен изменить, чтобы мой код работал?
2 ответа
Решение
Вместо этого:
dists[i] = document_distances
Сделай это:
dists.append(document_distances)
В вашем коде есть несколько очень странных утверждений: вы перебираете 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)