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