无法将稀疏矩阵转换为密集矩阵

Unable to convert a sparse matrix to a dense one

我有矩阵 GxGy 都是 coo 类型的稀疏矩阵。

我用它们执行以下操作:

A = np.hstack((Gx.transpose(),Gy.transpose()))
B = np.vstack((Gx,Gy))

L = np.dot(A,B)

我想可视化解决方案,C 所以我使用了 C.toarray() 和 C.todense(),但答案如下:

In [391]: C
Out[391]: 
  array([ <16x16 sparse matrix of type '<type 'numpy.float64'>'
with 64 stored elements in Compressed Sparse Row format>], dtype=object)


In [392]: C.toarray() 
Traceback (most recent call last):
   File "<ipython-input-390-86c90f8dce51>", line 1, in <module>
    C.toarray()
AttributeError: 'numpy.ndarray' object has no attribute 'toarray'

我怎样才能看到密集形式的矩阵 C

发件人:

array([ <16x16 sparse matrix of type '<type 'numpy.float64'>'

以压缩稀疏行格式存储 64 个元素>], dtype=object)

我推断 C 是一个包含 dtype=object 的 1 元素密集数组。那一个元素是一个稀疏矩阵。

所以我希望

 C[0].toarray()  

会起作用的。如错误所述,numpy 数组没有 toarray 方法。但在这种情况下,它的元素会。

由于 GxGy 是稀疏的,因此您需要使用 hstackvstack 的稀疏版本,而不是 numpy 版本。检查 AB 的类型。我是那些 numpy 数组,而不是稀疏矩阵。


看看当我将 np.hstack 与几个稀疏矩阵一起使用时会发生什么:

In [70]: M=sparse.csr_matrix([[0,1,2],[2,3,4]])
In [71]: np.hstack([M,M])
/usr/lib/python3/dist-packages/scipy/sparse/compressed.py:298: SparseEfficiencyWarning: Comparing sparse matrices using >= and <= is inefficient, using <, >, or !=, instead.
  "using <, >, or !=, instead.", SparseEfficiencyWarning)
Out[71]: 
array([ <2x3 sparse matrix of type '<class 'numpy.int32'>'
    with 5 stored elements in Compressed Sparse Row format>,
       <2x3 sparse matrix of type '<class 'numpy.int32'>'
    with 5 stored elements in Compressed Sparse Row format>], dtype=object)

结果不是稀疏的,而是密集的,有 2 个稀疏元素。