我有一个–大–数据框,在一个二部图中有一列边。我想把它转换成python稀疏转换矩阵
因此,我有一个数据框,其中有一个边列表,将第1部分(a,b,c)中的节点与第(x,y,z)部分链接起来。边具有多重性:在本例中,从b到y有两条边
start end multiplicity
a x 1
a y 1
b y 2
b z 1
c x 1
c z 1
我想要的结果是一个稀疏矩阵,在本例中为3x3。我有第1部分和第2部分的字典,指出哪个节点对应于生成的转换矩阵的哪些行和列:
dic1 = {'a':0,'b':1,'c':2}
dic2 = {'x':1,'y':0,'z':2}
所以我想要矩阵
y x z
a 1 1 0
b 2 0 1
c 0 1 1
…但在稀疏(csr_矩阵、lil_矩阵或coo_矩阵)中。我曾尝试在边列表上迭代,但对于长列表来说太慢了。 此外,基于pivot的方法将生成完整的矩阵,这将是缓慢和内存消耗的。 有没有一种有效的方法来获得我想要的稀疏矩阵
据我所知,您可以尝试使用^{} (我添加了两个变量
m
和final
以提高可读性,您可以在测试后用一个变量替换它们):相关问题 更多 >
编程相关推荐