w3resource

NumPy: Compute the factor of a given array by Singular Value Decomposition


Write a NumPy program to compute the factor of a given array by Singular Value Decomposition.

Sample Solution:

Python Code :

# Importing the NumPy library
import numpy as np

# Create a 4x5 NumPy array 'a' with specified values and data type as float32
a = np.array([[1, 0, 0, 0, 2], [0, 0, 3, 0, 0], [0, 0, 0, 0, 0], [0, 2, 0, 0, 0]], dtype=np.float32)

# Display the original array 'a'
print("Original array:")
print(a)

# Compute the Singular Value Decomposition (SVD) of the array 'a' using np.linalg.svd()
# The SVD returns matrices 'U', 's' (singular values), and 'V' (conjugate transpose of right singular vectors)
U, s, V = np.linalg.svd(a, full_matrices=False)

# Compute the QR decomposition of the array 'a' using np.linalg.qr()
# QR decomposition provides matrices 'q' (orthogonal/unitary) and 'r' (upper triangular)
q, r = np.linalg.qr(a)

# Display the SVD factorization results of the given array
print("Factor of a given array by Singular Value Decomposition:")
print("U=\n", U, "\ns=\n", s, "\nV=\n", V) 

Sample Output:

Original array:
[[ 1.  0.  0.  0.  2.]
 [ 0.  0.  3.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  2.  0.  0.  0.]]
Factor of a given array  by Singular Value Decomposition:
U=
 [[ 0.  1.  0.  0.]
 [ 1.  0.  0.  0.]
 [ 0.  0.  0. -1.]
 [ 0.  0.  1.  0.]] 
s=
 [ 3.          2.23606801  2.          0.        ] 
V=
 [[-0.          0.          1.         -0.          0.        ]
 [ 0.44721359 -0.         -0.         -0.          0.89442718]
 [-0.          1.          0.         -0.          0.        ]
 [ 0.          0.          0.          1.          0.        ]]

Python-Numpy Code Editor: