@HitGirl

Как создать симметричную матрицу из списка?

Есть массив из n элементов: [1, 0.6, 0.8, 0.3].
Надо из него получить такую матрицу:

[
  [1,      0.6,    0.8,      0.3],
  [0.6,       1,   0.6,      0.8],
  [0.8,     0.6,      1,     0.6],
  [0.3,     0.8,    0.6,       1]
]
  • Вопрос задан
  • 632 просмотра
Решения вопроса 1
bravebug
@bravebug
Только обещай понять, как это получилось, хорошо?
l = [1, 0.6, 0.8, 0.3]
l_len = len(l)
res = [[l[abs(x-y)] for y in range(l_len)] for x in range(l_len)]
print(res) # [[1, 0.6, 0.8, 0.3], [0.6, 1, 0.6, 0.8], [0.8, 0.6, 1, 0.6], [0.3, 0.8, 0.6, 1]]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexbprofit
Junior SE
import numpy as np

data = [1,0.6, 0.8, 0.3]

n = len(data)  # could be 24
 
x = np.array(data).reshape((1, n))
ind = np.zeros((n, n))
ind[x <= x.transpose()] = np.array(data + data + data[:2])
ind = ind + ind.transpose() - np.diag(np.diag(ind))
 
print(ind)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы