问题描述
我有两个 scipy 稀疏矩阵 matrix_1 和 matrix_2。它们的尺寸如下:
<628x628 sparse matrix of type '<class 'numpy.float64'>'
<411x411 sparse matrix of type '<class 'numpy.float64'>'
我试图将这两个矩阵组合在一起,使两个不连接的矩阵在一个 csr 矩阵中。
例如,假设两个矩阵是
1 2 3 1 2 3
1 0 0 1 1 1 1 0
2 1 0 1 2 1 1 1
3 1 1 0 3 0 1 0
并在操作之后,结果应该是
1 2 3 4 5 6 1 2 3 4 5 6
1 0 0 1 1 0 0 1 0 0 0
2 1 0 1 2 1 0 1 0 0 0
3 1 1 0 => 3 1 1 0 0 0 0
4 1 1 0 4 0 0 0 1 1 0
5 1 1 1 5 0 0 0 1 1 1
6 0 1 0 6 0 0 0 0 1 0
我检查了 scipy 的文档,发现了 vstack
和 hstack
函数,但它们不起作用,因为矩阵的维度不一样。即使维度成立,他们也不会给出我想要的结果,因为这两个图是断开的。
我已经检查了这些 stackoverflow 问题:
scipy append all rows of one sparse matrix to another How to concatenate two matrices in Python?
还有很多不相关的帖子,但我想不出一个有效的解决方案。我发现的唯一想法是将 csr 矩阵转换为字典,附加它们并将其转换回 csr 矩阵,但它似乎效率很低。 有没有一种有效的方法可以用 scipy 和 python 来做到这一点?
提前感谢您的帮助!
解决方法
正如评论中建议的hpaulj,
import scipy.sparse as sp
combined_matrix = sp.bmat([[graph_1,None],[None,graph_2]],format="csr")
解决了我的问题。