Я хочу создать словарь в форме (строка, столбец): значение из симметричной матрицы (например, матрицы расстояний), как показано ниже, без учета значений NaN или нулей (нули - это диагональ). Матрица представляет собой кадр данных pandas.
Material 100051 100120 100138 100179 100253 100265 100281
100051 0.0 0.953488 0.959302 0.953488 0.959302 0.953488 0.953488
100120 NaN 0.000000 0.965116 0.953488 0.959302 0.959302 0.959302
100138 NaN NaN 0.000000 0.959302 0.970930 0.970930 0.970930
100179 NaN NaN NaN 0.000000 0.959302 0.953488 0.953488
100253 NaN NaN NaN NaN 0.000000 0.976744 0.976744
... ... ... ... ... ... ... ...
Итак, словарь, который выглядит так:
{((100120, 100051): 0.953488); ((1000138, 100051): 0.959302); ....}
Для создания словаря вы, вероятно, можете перебирать как строки, так и столбцы, например:
jacsim_values = {}
for i in jacsim_matrix2:
for j in jacsim_matrix2:
if jacsim_matrix[i][j] != 0:
jacsim_values[i,j] = jacsim_matrix2[i][j]
Но я ищу что-то более эффективное. Это занимает довольно много времени для размера матрицы. Однако я не мог найти, как это сделать. Есть ли кто-нибудь, кто может мне помочь?