NumPy: Get the qr factorization of a given array

NumPy: Linear Algebra Exercise-17 with Solution

Write a NumPy program to get the qr factorization of a given array.

Sample Solution:

Python Code :

import numpy as np
a = np.array([[4, 12, -14], [12, 37, -53], [-14, -53, 98]], dtype=np.int32)
print("Original array:")
q, r = np.linalg.qr(a)
print("qr factorization of the said array:")
print( "q=\n", q, "\nr=\n", r)

Sample Output:

Original array:
[[  4  12 -14]
 [ 12  37 -53]
 [-14 -53  98]]
qr factorization of the said array:
 [[-0.21199958 -0.27930103  0.93650794]
 [-0.63599873 -0.68815735 -0.34920635]
 [ 0.74199852 -0.66964945 -0.03174603]] 
 [[ -18.86796226  -65.4018692   109.39178122]
 [   0.            6.67798664  -25.24309237]
 [   0.            0.            2.28571429]]

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a NumPy program to get the lower-triangular L in the Cholesky decomposition of a given array.
Next: Write a NumPy program to compute the factor of a given array by Singular Value Decomposition.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz

Python: Tips of the Day

Getting the last element of a list:

some_list[-1] is the shortest and most Pythonic.

In fact, you can do much more with this syntax. The some_list[-n] syntax gets the nth-to-last element. So some_list[-1] gets the last element, some_list[-2] gets the second to last, etc, all the way down to some_list[-len(some_list)], which gives you the first element.

You can also set list elements in this way. For instance:

>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]

Note that getting a list item by index will raise an IndexError if the expected item doesn't exist. This means that some_list[-1] will raise an exception if some_list is empty, because an empty list can't have a last element.

Ref: https://bit.ly/3d8TfFP