我的矩阵Gx
和Gy
都是稀疏的类型。
我用它们执行以下操作:
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
?
答案 0 :(得分:3)
自:
array([ <16x16 sparse matrix of type '<type 'numpy.float64'>'
64个存储元素,压缩稀疏行格式&gt;],dtype = object)
我推断C
是一个带有dtype=object
的1元素密集数组。那一个元素是一个稀疏矩阵。
所以我希望
C[0].toarray()
会奏效。如错误所示,numpy
数组没有toarray
方法。但在这种情况下,它的元素确实如此。
由于Gx
和Gy
稀疏,因此您需要使用hstack
和vstack
的稀疏版本,而不是numpy
版本。检查A
和B
的类型。我是那些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个稀疏元素。