【问题标题】:Scipy: Sparse matrix is of wrong dimension?Scipy:稀疏矩阵的维度错误?
【发布时间】:2014-05-14 12:58:51
【问题描述】:

下午好,

我正在努力:

scipy.sparse.dia_matrx(x, shape = (x.size, x.size))

但是矩阵的最终形状是 x.size x 1。我做错了吗?还是我错过了文档中的某些内容?

这很重要,因为我乘以密集矩阵/向量。

TIA

>>> t scipy.sparse.dia_matrix(x, shape = (x.size, x.size))
>>> t
<217766x1 sparse matrix of type '<class 'numpy.float64'>'
with 217766 stored elements (217766 diagonals) in DIAgonal format>
>>> t.shape
(217766, 1) 

X 是一个 217766x1 的 Numpy 数组

【问题讨论】:

  • 什么是x?你能扩展这个例子吗? (创建x,打印出生成矩阵的大小)

标签: python scipy sparse-matrix


【解决方案1】:

如果x 的形状为(N, 1),那么我认为你想要:

 t = dia_matrix((x.T, 0), shape=(x.size, x.size))

如果x 的形状为(N,)(即它是一维数组),那么上面的x 的转置就没有必要了。

【讨论】:

  • 感谢您的回复。当我尝试抱怨时:ValueError:对角线数(217766)与偏移数(1)不匹配
  • 对——我重读了你的问题,注意到你说x 有形状(N,1)。我相应地更新了答案。
  • 看起来这种稀疏矩阵的代码可以使用更多的错误检查。文档很清楚,但并不坚持,如果第一个参数包含对角线值,则它应该是一个元组。如果它是一个数组,它只是将它转换为一个稀疏矩阵,忽略 shape 参数。
猜你喜欢
  • 2020-10-16
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2017-03-31
  • 2023-04-10
  • 2018-03-05
相关资源
最近更新 更多