【问题标题】:access scipy matrix in dense format以密集格式访问 scipy 矩阵
【发布时间】:2015-02-15 07:02:27
【问题描述】:

我正在使用如下网络构建图:

>>> import networkx as nx
>>>
>>> G = nx.DiGraph()
>>> G.add_edge(1, 2, weight = 1.0)
>>> G.add_edge(1, 4, weight = 2.0)
>>> G.add_edge(2, 3, weight = 3.0)
>>> G.add_edge(2, 4, weight = 4.0)
>>> G.add_edge(3, 4, weight = 5.0)
>>> G.add_edge(3, 5, weight = 6.0)
>>> G.add_edge(4, 5, weight = 7.0)

然后我使用 csr 格式将矩阵压缩为 scipy 矩阵:

S = nx.to_scipy_sparse_matrix(G, format='csr')

我将矩阵恢复为密集形式:

>>> S.todense()
matrix([[ 0.,  1.,  0.,  2.,  0.],
        [ 0.,  0.,  3.,  4.,  0.],
        [ 0.,  0.,  0.,  5.,  6.],
        [ 0.,  0.,  0.,  0.,  7.],
        [ 0.,  0.,  0.,  0.,  0.]])

如何访问该矩阵的每个元素?我试过 S.todense()[0][0]。但它不起作用?有人可以帮忙吗?

【问题讨论】:

    标签: python numpy matrix scipy networkx


    【解决方案1】:

    这应该可行:

    S.todense()[0, 0]
    

    todense() 返回np.matrix,您也可以使用.A 返回np.array。在这种情况下:

    S.A[0][0]
    

    可以,但是

    S.A[0,0]
    

    仍然是首选。

    【讨论】:

    • @f4fc2791e4473eb2ba41b5ddb445b2,如果需要np.array,可以使用.A
    • 我怎样才能得到矩阵的大小?
    • S.shape 会给你(n_rows, n_cols)S.size 会给你非零元素的数量。
    猜你喜欢
    • 2016-02-03
    • 2014-03-06
    • 2012-02-20
    • 2013-05-20
    • 1970-01-01
    • 2017-05-17
    • 2016-06-25
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多