使用NumPy通过单值分解计算给定数组的因子
单值分解是指当arr是一个二维数组时,它被分解为u和vh ,其中u和vh是二维单元数组,s是一个一维数组的奇异值。numpy.linalg.svd() 函数用于通过奇异值分解计算数组的因子。
语法: numpy.linalg.svd(a, full_matrices=True, compute_uv=True, hermitian=False)
参数 :
- a (…, M, N) 数组:一个实数或复数数组,a.ndim >= 2。
- full_matrices(bool, optional) :如果为真(默认),u和vh的形状分别为(…,M,M)和(…,N,N)。否则,其形状分别为(…, M, K)和(…, K, N),其中K=min(M, N)。
- compute_uv(bool, optional) :是否在s之外计算u和vh,其默认值为True。
- hermitian(bool, optional) :如果为 “真”,则假定a是赫米特的(如果是实值,则是对称的),这样可以用更有效的方法来寻找奇异值。它的默认值是假的。
下面是一些关于如何使用函数的例子。
例子1 :
# Import numpy library
import numpy as np
# Create a numpy array
arr = np.array([[0, 0, 0, 0, 1], [2, 0, 0, 1, 3],
[4, 0, 2, 0, 0], [3, 2, 0, 0, 1]],
dtype=np.float32)
print("Original array:")
print(arr)
# Compute the factor by Singular Value
# Decomposition
U, s, V = np.linalg.svd(arr, full_matrices=False)
# Print the result
print("\nFactor of the given array by Singular Value Decomposition:")
print("\nU=", U, "\n\ns=", s, "\n\nV=", V)
输出 :
例子2 :
# Import numpy library
import numpy as np
# Create a numpy array
arr = np.array([[8, 4, 0], [2, 5, 1],
[4, 0, 9]], dtype=np.float32)
print("Original array:")
print(arr)
# Compute the factor
U, s, V = np.linalg.svd(arr, full_matrices=False)
# Print the result
print("\nFactor of the given array by Singular Value Decomposition:")
print("\nU=", U, "\n\ns=", s, "\n\nV=", V)
输出 :
例子3 :
# Import numpy library
import numpy as np
# Create a numpy array
arr = np.array([[8, 1], [0, 5]], dtype=np.float32)
print("Original array:")
print(arr)
# Compute the factor
U, s, V = np.linalg.svd(arr, full_matrices=False)
# Print the result
print("\nFactor of the given array by Singular Value Decomposition:")
print("\nU=", U, "\n\ns=", s, "\n\nV=", V)
输出 :