【问题标题】:Python - How to convert the matrix (made from pandas) into list?Python - 如何将矩阵(由熊猫制成)转换为列表?
【发布时间】:2018-10-23 10:34:38
【问题描述】:

我已经创建了 jaccard 相似性(参考这篇文章->How to compute jaccard similarity from a pandas dataframe

            Unnamed    A     B      C    D     
 Unnamed       1      0.05  0.05  0.05  0.05  
    A        0.05      1    0.99  0.99  0.99  
    B        0.05   0.99     1    0.99  0.99  
    C        0.05   0.99    0.99    1   0.99  
    D        0.05   0.99    0.99  0.99   1    

上面显示的矩阵也指的是参考帖子。

我的问题是我想知道如何将此矩阵转换为对或列表?因为我将使用列表或配对形式的数据来创建网络

我希望看到结果

([unnamed, unnamed], 1)
([unnamed, A], 0.05)
([unnamed, B], 0.05)
([unnamed, C], 0.05)
([unnamed, D], 0.05
([A, unnamed], 0.05)
([A,A], 1)
([A,B], 0.99)
([A,C], 0.99)
([A,D], 0.99)
.
.
.
([D,Unnamed], 0.05)
([D,A], 0.99)
([D,B], 0.99)
([D,C], 0.99)
([D,D], 1)

谢谢你

【问题讨论】:

    标签: python pandas matrix


    【解决方案1】:

    使用

    In [91]: df.stack().to_dict()
    Out[91]:
    {('Unnamed', 'Unnamed'): 1.0,
     ('Unnamed', 'A'): 0.05,
     ('Unnamed', 'B'): 0.05,
     ('Unnamed', 'C'): 0.05,
     ('Unnamed', 'D'): 0.05,
     ('A', 'Unnamed'): 0.05,
     ('A', 'A'): 1.0,
     ('A', 'B'): 0.99,
     ('A', 'C'): 0.99,
     ('A', 'D'): 0.99,
     ('B', 'Unnamed'): 0.05,
     ('B', 'A'): 0.99,
     ('B', 'B'): 1.0,
     ('B', 'C'): 0.99,
     ('B', 'D'): 0.99,
     ('C', 'Unnamed'): 0.05,
     ('C', 'A'): 0.99,
     ('C', 'B'): 0.99,
     ('C', 'C'): 1.0,
     ('C', 'D'): 0.99,
     ('D', 'Unnamed'): 0.05,
     ('D', 'A'): 0.99,
     ('D', 'B'): 0.99,
     ('D', 'C'): 0.99,
     ('D', 'D'): 1.0}
    

    或者,

    In [98]: [(list(i), v) for i, v in df.stack().iteritems()]
    Out[98]:
    [(['Unnamed', 'Unnamed'], 1.0),
     (['Unnamed', 'A'], 0.05),
     (['Unnamed', 'B'], 0.05),
     (['Unnamed', 'C'], 0.05),
     (['Unnamed', 'D'], 0.05),
     (['A', 'Unnamed'], 0.05),
     (['A', 'A'], 1.0),
     (['A', 'B'], 0.99),
     (['A', 'C'], 0.99),
     (['A', 'D'], 0.99),
     (['B', 'Unnamed'], 0.05),
     (['B', 'A'], 0.99),
     (['B', 'B'], 1.0),
     (['B', 'C'], 0.99),
     (['B', 'D'], 0.99),
     (['C', 'Unnamed'], 0.05),
     (['C', 'A'], 0.99),
     (['C', 'B'], 0.99),
     (['C', 'C'], 1.0),
     (['C', 'D'], 0.99),
     (['D', 'Unnamed'], 0.05),
     (['D', 'A'], 0.99),
     (['D', 'B'], 0.99),
     (['D', 'C'], 0.99),
     (['D', 'D'], 1.0)]
    

    【讨论】:

    • 感谢您的建议,我还有一个问题。如果我想看到结果为(A,A,1.0),(A,B,0.99)......有什么建议吗? ._.
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2021-06-23
    • 2019-02-25
    • 2014-03-05
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多