【发布时间】:2014-11-06 13:59:46
【问题描述】:
我在尝试计算稀疏矩阵的 1 范数时遇到了一个问题。我正在使用函数scipy.sparse.linalg.onenormest,但它给了我一个错误,因为运算符只能作用于方阵。
这里是一个代码示例:
from scipy import sparse
row = array([0,2,2,0,1,2])
col = array([0,0,1,2,2,2])
data = array([1,2,3,4,5,6])
A = sparse.csc_matrix( (data,(row,col)), shape=(5,3) )
onenormest(A)
这是错误:
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "C:\Python27\lib\site-packages\scipy\sparse\linalg\_onenormest.py", line 76, in onenormest
raise ValueError('expected the operator to act like a square matrix')
ValueError: expected the operator to act like a square matrix
如果我将 A 定义为方阵,则运算符 onenormest 可以工作,但这不是我想要的。
有人知道如何计算稀疏非方阵的一范数吗?
【问题讨论】:
-
你真的想要
L^1-norm吗?我不知道1-norm是什么。 -
没错,所以在这个例子中,L1-norm 必须是 15
-
不是说应该是21吗?
-
其实我想复制 Matlab norm(X,p) 函数。其中 X 是我的稀疏矩阵,p = 1。Matlab 给出的结果是 15。基本上是 X 的所有列中最高的 L1 范数。
标签: python matrix scipy sparse-matrix norm