微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中有效地结合断开的csr矩阵?

如何解决如何在python中有效地结合断开的csr矩阵?

我有两个 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 的文档,发现了 vstackhstack 函数,但它们不起作用,因为矩阵的维度不一样。即使维度成立,他们也不会给出我想要的结果,因为这两个图是断开的。

我已经检查了这些 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")

解决了我的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。