For matrix and vector usage in python, we will import the numpy
package.
# Basic matrix operators
import numpy as np
# Import the pseudo inverse function
from numpy.linalg import pinv
Denoting the matrix in python:
A = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
])
A
array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]])
Items in python are the same, except for 0-indexed
A[3, 1]
11
Denoting the vector in python:
y = np.array([
[1],
[2],
[3],
])
y
array([[1], [2], [3]])
Items in python (again, same but 0-indexed):
y[1, 0]
2
data_matrix = np.array([
[1, 2104],
[1, 1416],
[1, 1534],
[1, 852],
])
parameters = np.array([
[-40],
[0.25],
])
data_matrix @ parameters
array([[486. ], [314. ], [343.5], [173. ]])
data_matrix = np.array([
[1, 2104],
[1, 1416],
[1, 1534],
[1, 852],
])
parameters = np.array([
[-40, 200, -150],
[0.25, 0.1, 0.4],
])
data_matrix @ parameters
array([[486. , 410.4, 691.6], [314. , 341.6, 416.4], [343.5, 353.4, 463.6], [173. , 285.2, 190.8]])
A = np.array([
[1, 2],
[4, 5]
])
I = np.identity(2)
I @ A
array([[1., 2.], [4., 5.]])
A @ I
array([[1., 2.], [4., 5.]])
A = np.array([
[3, 4],
[2, 16],
])
A
array([[ 3, 4], [ 2, 16]])
I = pinv(A)
I
array([[ 0.4 , -0.1 ], [-0.05 , 0.075]])
A @ I
array([[ 1.00000000e+00, 1.11022302e-16], [-3.33066907e-16, 1.00000000e+00]])
A = np.array([
[1, 2, 0],
[3, 5, 9],
])
A
array([[1, 2, 0], [3, 5, 9]])
np.transpose(A)
array([[1, 3], [2, 5], [0, 9]])