【发布时间】:2020-09-04 02:39:54
【问题描述】:
我想创建一个形式为 (row, column): value 的字典,来自如下所示的对称矩阵(如距离矩阵),不考虑 NaN 值或零(零是对角线) .该矩阵是一个熊猫数据框。
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]
但我正在寻找更有效的方法。这需要相当长的时间来确定矩阵的大小。但是,我找不到如何做到这一点。有没有人可以帮帮我?
【问题讨论】:
标签: pandas dataframe dictionary matrix symmetric