# Calculate the QR decomposition of a given matrix using NumPy

• Last Updated : 05 Sep, 2020

In this article, we will discuss QR decomposition of a matrix. QR factorization of a matrix is the decomposition of a matrix say ‘A’ into ‘A=QR’ where Q is orthogonal and R is an upper-triangular matrix. We can calculate the QR decomposition of a given matrix with the help of numpy.linalg.qr().

Syntax : numpy.linalg.qr(a, mode=’reduced’)

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Parameters :

• a : matrix(M,N) which needs to be factored.
• mode : it is optional. It can be :

Example 1:

## Python3

 `import` `numpy as np`` ` ` ` `# Original matrix``matrix1 ``=` `np.array([[``1``, ``2``, ``3``], [``3``, ``4``, ``5``]])``print``(matrix1)`` ` `# Decomposition of the said matrix``q, r ``=` `np.linalg.qr(matrix1)``print``(``'\nQ:\n'``, q)``print``(``'\nR:\n'``, r)`

Output:

```[[1 2 3]
[3 4 5]]

Q:
[[-0.31622777 -0.9486833 ]
[-0.9486833   0.31622777]]

R:
[[-3.16227766 -4.42718872 -5.69209979]
[ 0.         -0.63245553 -1.26491106]]
```

Example 2:

## Python3

 `import` `numpy as np`` ` ` ` `# Original matrix``matrix1 ``=` `np.array([[``1``, ``0``], [``2``, ``4``]])``print``(matrix1)`` ` `# Decomposition of the said matrix``q, r ``=` `np.linalg.qr(matrix1)``print``(``'\nQ:\n'``, q)``print``(``'\nR:\n'``, r)`

Output:

```[[1 0]
[2 4]]

Q:
[[-0.4472136  -0.89442719]
[-0.89442719  0.4472136 ]]

R:
[[-2.23606798 -3.57770876]
[ 0.          1.78885438]]
```

Example 3:

## Python3

 `import` `numpy as np ``   ` `# Create a numpy array  ``arr ``=` `np.array([[``5``, ``11``, ``-``15``], [``12``, ``34``, ``-``51``], ``                ``[``-``24``, ``-``43``, ``92``]], dtype``=``np.int32) ``   ` `print``(arr)`` ` `# Find the QR factor of array ``q, r ``=` `np.linalg.qr(arr) ``print``(``'\nQ:\n'``, q)``print``(``'\nR:\n'``, r)`

Output:

```[[  5  11 -15]
[ 12  34 -51]
[-24 -43  92]]

Q:
[[-0.18318583 -0.08610905  0.97929984]
[-0.43964598 -0.88381371 -0.15995231]
[ 0.87929197 -0.45984624  0.12404465]]

R:
[[-27.29468813 -54.77256208 106.06459346]
[  0.         -11.22347731   4.06028083]
[  0.           0.           4.88017756]]
```

My Personal Notes arrow_drop_up