scipy.sparse.linalg.

norm#

scipy.sparse.linalg.norm(x, ord=None, axis=None)[原始碼]#

稀疏矩陣的範數

此函數能夠根據 ord 參數的值,傳回七種不同的矩陣範數之一。

參數:
x一個稀疏陣列

輸入稀疏陣列。

ord{非零整數, inf, -inf, ‘fro’}, 可選

範數的階數(請參閱 Notes 下的表格)。inf 表示 numpy 的 inf 物件。

axis{整數, 2 元組整數, None}, 可選

如果 axis 是一個整數,它指定了計算向量範數的 x 的軸。如果 axis 是一個 2 元組,它指定了保存 2-D 矩陣的軸,並計算這些矩陣的矩陣範數。如果 axis 為 None,則返回向量範數(當 x 為 1-D 時)或矩陣範數(當 x 為 2-D 時)。

返回:
n浮點數或 ndarray

註解

某些 ord 未實作,因為某些相關函數(例如 _multi_svd_norm)尚不適用於稀疏陣列。

此文件字串基於 numpy.linalg.norm 修改。numpy/numpy

可以計算以下範數

ord

稀疏陣列的範數

None

Frobenius 範數

‘fro’

Frobenius 範數

inf

max(sum(abs(x), axis=1))

-inf

min(sum(abs(x), axis=1))

0

abs(x).sum(axis=axis)

1

max(sum(abs(x), axis=0))

-1

min(sum(abs(x), axis=0))

2

譜範數(最大的奇異值)

-2

未實作

其他

未實作

Frobenius 範數由 [1] 給出

\(||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2}\)

參考文獻

[1]

G. H. Golub and C. F. Van Loan, Matrix Computations, Baltimore, MD, Johns Hopkins University Press, 1985, pg. 15

範例

>>> from scipy.sparse import csr_array, diags_array
>>> import numpy as np
>>> from scipy.sparse.linalg import norm
>>> a = np.arange(9) - 4
>>> a
array([-4, -3, -2, -1, 0, 1, 2, 3, 4])
>>> b = a.reshape((3, 3))
>>> b
array([[-4, -3, -2],
       [-1, 0, 1],
       [ 2, 3, 4]])
>>> b = csr_array(b)
>>> norm(b)
7.745966692414834
>>> norm(b, 'fro')
7.745966692414834
>>> norm(b, np.inf)
9
>>> norm(b, -np.inf)
2
>>> norm(b, 1)
7
>>> norm(b, -1)
6

矩陣 2-範數或譜範數是最大的奇異值,以近似值計算且具有限制。

>>> b = diags_array([-1, 1], [0, 1], shape=(9, 10))
>>> norm(b, 2)
1.9753...