Numpy 稀疏矩阵可视化

Numpy 稀疏矩阵可视化,numpy,scipy,sparse-matrix,Numpy,Scipy,Sparse Matrix,我在做有限元分析。我只是想计算一个简单的矩阵乘法,看看数值结果。如何查看稀疏矩阵的元素 我使用的代码是: U_h= 0.5 * np.dot(np.dot(U[np.newaxis], K), U[np.newaxis].T) 因为U是1x3矩阵,K是3x3矩阵,U.T是3x1矩阵,所以我希望是一个包含单个数字的1x1矩阵。但结果是"[[ 您得到的是矩阵的repr格式: In [261]: M

我在做有限元分析。我只是想计算一个简单的矩阵乘法,看看数值结果。如何查看稀疏矩阵的元素

我使用的代码是:

U_h= 0.5 * np.dot(np.dot(U[np.newaxis], K), U[np.newaxis].T)
因为U是1x3矩阵,K是3x3矩阵,U.T是3x1矩阵,所以我希望是一个包含单个数字的1x1矩阵。但结果是"[[ 您得到的是矩阵的
repr
格式:

In [261]: M                                                                          
Out[261]: 
<5x5 sparse matrix of type '<class 'numpy.float64'>'
    with 5 stored elements in Compressed Sparse Row format>
In [262]: repr(M)                                                                    
Out[262]: "<5x5 sparse matrix of type '<class 'numpy.float64'>'\n\twith 5 stored elements in Compressed Sparse Row format>"
如果矩阵不大,则将其显示为密集数组很好。
M.toarray()
就是这样做的,简而言之:

In [265]: M.A                                                                        
Out[265]: 
array([[0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.71527491, 0.42980962, 0.        , 0.81483273, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.23366934, 0.        , 0.        , 0.61174992, 0.        ]])
  • 使用plt.spy()进行图形检查
  • 参见应用示例
  • 请参阅参考手册

感谢您的回复。当我使用M.A时,它仍然不起作用。python的响应是:“numpy.ndarray”对象没有属性“A”,或者“numpy.ndarray”对象没有属性“toarray”。在这种情况下,对象是一个规则数组,而不是稀疏数组,我错过了tge[]]在您的显示中。这是一个密集数组中的稀疏矩阵。使用np.dot是错误的。请询问一个新问题,了解更多信息-变量和类型,而不仅仅是形状。我使用了类型(U_h)并在打印(U_h)时得到[[],您是对的。我必须将K矩阵更改为数组,而不是U_h。因此,这是解决方案:U_h=0.5*np.dot(np.dot(U.T,K.toarray()),U)
In [263]: print(M)                                                                   
  (1, 0)    0.7152749140462651
  (1, 1)    0.4298096228326874
  (1, 3)    0.8148327301300698
  (4, 0)    0.23366934073409018
  (4, 3)    0.6117499168861333
In [264]: str(M)                                                                     
Out[264]: '  (1, 0)\t0.7152749140462651\n  (1, 1)\t0.4298096228326874\n  (1, 3)\t0.8148327301300698\n  (4, 0)\t0.23366934073409018\n  (4, 3)\t0.6117499168861333'
In [265]: M.A                                                                        
Out[265]: 
array([[0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.71527491, 0.42980962, 0.        , 0.81483273, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.23366934, 0.        , 0.        , 0.61174992, 0.        ]])