访问密集格式的scipy矩阵

时间:2014-12-16 20:43:31

标签: python numpy matrix scipy networkx

我使用网络构建图表如下:

>>> 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]。但它不起作用?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这应该有效:

S.todense()[0, 0]

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

S.A[0][0]

会工作,但

S.A[0,0]

仍然是首选。