【问题标题】:Ordering 2 symmetric matrices in the same fashion以相同的方式对 2 个对称矩阵进行排序
【发布时间】:2016-07-19 16:16:31
【问题描述】:

我有 2 个对称矩阵,其中一个是相关矩阵,另一个类似于相关矩阵。这些矩阵的示例如下所示:

相关矩阵(c):

    A    B    C    D
A   1   0.5  0.1  0.4
B   0.5   1   0.9  0.3
C   0.1  0.9   1   0.3
D   0.4  0.3  0.3   1

其他矩阵(z):

    A    B    C    D
A   3    2    2    2
B   2    3    3    2
C   2    3    3    2
D   2    2    2    3

我将相关矩阵按降序排序,以便查看最高的相关值,使用以下代码:

c = corrMatrixMin10.abs()
s = c.unstack()
so = s.sort_values(kind="quicksort")
pd.DataFrame(so[so.values!=1].sort_values(ascending=False))

我的问题如下:

当我按降序排列相关矩阵c 时,相关矩阵本身就失去了形状。我如何以完全相同的顺序获得另一个矩阵z

例如:矩阵c中的列AB的交集是0.5。矩阵z 中的列AB 的交集是2。在按降序排列矩阵c 后,如何仍然保留此顺序以关联这两个值?

任何帮助将不胜感激。 TIA。

生成2个矩阵的代码如下:

c = pd.DataFrame([[1, 0.5,  0.1, 0.4],
                   [0.5,  1,  0.9, 0.3],
                   [ 0.1,  0.9,  1, 0.3],
                   [ 0.4, 0.3, 0.3,  1]],
                  columns=list('ABCD'))

z = pd.DataFrame([[3, 2,  2, 2],
                   [2,  3,  3, 2],
                   [ 2,  3,  3, 2],
                   [ 2, 2, 2,  3]],
                  columns=list('ABCD'))

【问题讨论】:

    标签: python pandas matrix dataframe


    【解决方案1】:

    您可以使用Series.reindex

    c_series = c.unstack().drop([(x, x) for x in c]).sort_values(ascending=False)
    z_series = z.unstack().reindex(c_series.index)
    

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2023-02-23
      相关资源
      最近更新 更多