Linear Algebra with numpy Package

by Qiang Gao, updated at Mar 14, 2017


Importing the package
In [1]: import numpy as np
Creating vectors
In [2]: x = np.array([3, 5, 2])
In [3]: ones = np.ones(3)
Calculating inner product
In [4]: ones.dot(x)
Out[4]: 10.0
Creating a matrix
In [5]: A = np.matrix([[4, 0, 5], [-1, 3, 2]]); A
Out[5]:
matrix([[ 4,  0,  5],
        [-1,  3,  2]])
Matrix hit a vector

In [6]: np.dot(A, x)
Out[6]: matrix([[22, 16]])
Matrix addition

In [7]: A = np.matrix([[4, 0, 5], [-1, 3, 2]])

In [8]: B = np.matrix([[1, 1, 1], [3, 5, 7]])

In [9]: A + B
Out[9]:
matrix([[5, 1, 6],
        [2, 8, 9]])
Matrix multiplication

In [10]: np.dot(A, A.T)
Out[10]:
matrix([[41,  6],
        [ 6, 14]])

In [11]: np.dot(A.T, A)
Out[11]:
matrix([[17, -3, 18],
        [-3,  9,  6],
        [18,  6, 29]])
Matrix inversion

In [12]: C = np.matrix([[-7, -5], [3, 2]]); C
Out[12]:
matrix([[-7, -5],
        [ 3,  2]])

In [13]: np.linalg.inv(C)
Out[13]:
matrix([[ 2.,  5.],
        [-3., -7.]])

In [14]: np.linalg.inv(C).dot(C)
Out[14]:
matrix([[  1.00000000e+00,  -1.77635684e-15],
        [ -8.88178420e-16,   1.00000000e+00]])
Determinant

In [15]: np.linalg.det(C)
Out[15]: 0.99999999999999911
Eigenvalues
In [16]: d = np.linalg.eigvals(C); d
Out[16]: array([-4.79128785, -0.20871215])
Eigenvectors
In [17]: d, V = np.linalg.eig(C); V
Out[17]:
matrix([[-0.91472651,  0.59288338],
        [ 0.40407351, -0.80528833]])

In [18]: np.dot(C, V[:, 0])
Out[18]:
matrix([[ 4.38271803],
        [-1.93603252]])

In [19]: d[0] * V[:, 0]
Out[19]:
matrix([[ 4.38271803],
        [-1.93603252]])
Diagonalization

where is a diagonal matrix with eigenvalues on the main diagonal, the columns of are corresponding eigenvectors.

In [20]: V.dot(np.diag(d)).dot(np.linalg.inv(V))
Out[20]:
matrix([[-7., -5.],
        [ 3.,  2.]])

In [21]: C
Out[21]:
matrix([[-7, -5],
        [ 3,  2]])

Copyright ©2017 by Qiang Gao

results matching ""

    No results matching ""