本文简要介绍 python 语言中 scipy.linalg.svdvals
的用法。
用法:
scipy.linalg.svdvals(a, overwrite_a=False, check_finite=True)#
计算矩阵的奇异值。
- a: (M, N) 数组
矩阵分解。
- overwrite_a: 布尔型,可选
是否覆盖a;可以提高性能。默认为假。
- check_finite: 布尔型,可选
是否检查输入矩阵是否仅包含有限数。禁用可能会提高性能,但如果输入确实包含无穷大或 NaN,则可能会导致问题(崩溃、非终止)。
- s: (min(M, N),) ndarray
奇异值,按降序排序。
- LinAlgError
如果 SVD 计算不收敛。
参数 ::
返回 ::
抛出 ::
注意:
svdvals(a)
与svd(a, compute_uv=False)
的区别仅在于它处理空a
的边情况,它返回一个空序列:>>> import numpy as np >>> a = np.empty((0, 2)) >>> from scipy.linalg import svdvals >>> svdvals(a) array([], dtype=float64)
例子:
>>> import numpy as np >>> from scipy.linalg import svdvals >>> m = np.array([[1.0, 0.0], ... [2.0, 3.0], ... [1.0, 1.0], ... [0.0, 2.0], ... [1.0, 0.0]]) >>> svdvals(m) array([ 4.28091555, 1.63516424])
我们可以通过计算 (x,y) 平面中所有单位向量 u 上的 m.dot(u) 的最大长度来验证 m 的最大奇异值。我们用大样本近似“all” 单位向量。由于线性关系,我们只需要角度在 [0, pi] 内的单位向量。
>>> t = np.linspace(0, np.pi, 2000) >>> u = np.array([np.cos(t), np.sin(t)]) >>> np.linalg.norm(m.dot(u), axis=0).max() 4.2809152422538475
p 是秩为 1 的投影矩阵。使用精确算术,其奇异值将是 [1, 0, 0, 0]。
>>> v = np.array([0.1, 0.3, 0.9, 0.3]) >>> p = np.outer(v, v) >>> svdvals(p) array([ 1.00000000e+00, 2.02021698e-17, 1.56692500e-17, 8.15115104e-34])
正交矩阵的奇异值均为 1。这里,我们使用以下方法创建一个随机正交矩阵:rvs()的方法scipy.stats.ortho_group.
>>> from scipy.stats import ortho_group >>> orth = ortho_group.rvs(4) >>> svdvals(orth) array([ 1., 1., 1., 1.])
相关用法
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.svds用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.spsolve用法及代码示例
- Python SciPy linalg.spsolve_triangular用法及代码示例
- Python SciPy linalg.solve_banded用法及代码示例
- Python SciPy linalg.solve_discrete_lyapunov用法及代码示例
- Python SciPy linalg.splu用法及代码示例
- Python SciPy linalg.spilu用法及代码示例
- Python SciPy linalg.solve用法及代码示例
- Python SciPy linalg.solveh_banded用法及代码示例
- Python SciPy linalg.solve_sylvester用法及代码示例
- Python SciPy linalg.solve_toeplitz用法及代码示例
- Python SciPy linalg.sqrtm用法及代码示例
- Python SciPy linalg.sinm用法及代码示例
- Python SciPy linalg.schur用法及代码示例
- Python SciPy linalg.solve_continuous_lyapunov用法及代码示例
- Python SciPy linalg.solve_continuous_are用法及代码示例
- Python SciPy linalg.solve_discrete_are用法及代码示例
- Python SciPy linalg.solve_triangular用法及代码示例
- Python SciPy linalg.sinhm用法及代码示例
- Python SciPy linalg.signm用法及代码示例
- Python SciPy linalg.subspace_angles用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.svdvals。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。