我有一个csr矩阵,从中提取数据、行和列。 我想使用NetworkX创建一个二部图,并且我也尝试了几种没有成功的解决方案(例如:Plot bipartite graph using networkx in Python)。为什么它不起作用,在我看来,是一个标签的问题。我的两个集合和其中的节点没有字符串名称。你知道吗
例如,在10x10矩阵中,行/列索引表示两个集合的节点名称,而这些节点的交集是这些节点之间的加权链接。你知道吗
在我的例子中,如果(0,0)=0.5,这并不意味着它是一个自循环;相反,权重为0.5的链接将第一个集合的“节点0”与第二个集合的“节点0”连接起来。你知道吗
import networkx as nx
from networkx.algorithms import bipartite
import matplotlib.pyplot as plt
def function(foo, n_row, n_col):
n_row=10
n_col=10
在创建矩阵之后,我获得了我的数据
weights = weights.tocsr()
wcoo = weights.tocoo()
m_data = wcoo.data
m_rows = wcoo.row
m_cols = wcoo.col
g = nx.Graph()
# TRIAL 1
g.add_nodes_from(m_cols, bipartite=0)
g.add_nodes_from(m_rows, bipartite=1)
bi_m = bipartite.matrix.biadjacency_matrix(g, m_data)
# TRIAL 2
g.add_weighted_edges_from(zip(m_cols, m_rows, m_data))
nx.draw(g, node_size=500)
plt.show()
我期望一个二部图,每个图有两组10个节点,每个节点之间有一定数量的加权链接(同一组中没有链接)。 一、 相反,得到了一个经典的无向图,共有10个节点。你知道吗
同时,我希望尽可能优化我的代码,以加快计算时间而不影响可读性。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐