【问题标题】:matlab spare matrix to pythonmatlab稀疏矩阵到python
【发布时间】:2022-08-18 22:29:33
【问题描述】:

我想在 python 中得到一个 16995 x 16995 的稀疏矩阵。我在 matlab 中有语法,但我不确定如何用 python 编写以获得相同的语法以及像 matlab 这样的输出。

matlab语法:

  C = [s1 s2 s3;s4 s5 s6;s7 s8 s9];

其中 s1,s2,s3,s4,s5,s6,s7,s8,s9 是一个稀疏的 csr 矩阵,每个维度为 5665 x 5665 。如何在 python 中编写相同的语法来获得精确的维度和稀疏矩阵。

我尝试使用块,但它没有给我正确的尺寸。 根据要求,代码的matlab版本:

  • 更有效的解决方案使用 sp.sparse.bmat
  • 不要为问题添加解决方案。相反,将您的解决方案作为答案发布。

标签: python matlab sparse-matrix


【解决方案1】:

这最好通过numpy.hstacknumpy.vstack 实现。

import numpy as np

C = np.vstack([
  np.hstack([s1, s2, s3]),
  np.hstack([s4, s5, s6]),
  np.hstack([s7, s8, s9]),
])

【讨论】:

  • 这不起作用。我得到了 numpy 模块的 ndarray 对象的 3 x 3 矩阵。
  • s1、s2等的类型是什么?你能包括他们的声明代码吗?
  • s1 和 s2 是稀疏矩阵。另外,我更新了我的帖子并添加了代码的 matlab 版本
  • 显示python代码
  • 对于稀疏矩阵,您需要 sp.sparse.hstack。
【解决方案2】:

解决方案 :

  C = vstack([
  hstack([s1, s2, s3]),
  hstack([s4, s5, s6]),
  hstack([s7, s8, s9])
  ],format='csr')

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2017-07-02
    • 2014-05-12
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多