In [12]:
import numpy as np
In [13]:
A = np.array([ [1,2,3], [4,5,6],[7,8,9],[10,11,12] ])
In [14]:
A
Out[14]:
In [15]:
A.shape
Out[15]:
In [16]:
A[0,:]
Out[16]:
In [17]:
A[0:1,:]
Out[17]:
In [18]:
A[0:2,:]
Out[18]:
In [21]:
A[:,0:2]
Out[21]:
In [23]:
A[:,[2]]
Out[23]:
In [26]:
A[1,2]=9
A
Out[26]:
In [28]:
# Extracting rows and columns by criteria
A[A[:,2] == 9]
Out[28]:
In [33]:
# Converting row to column vectors
b = np.array([1,2,3])
b2 = b[np.newaxis].T
b2
Out[33]:
In [34]:
total_elements = A.shape[0] * A.shape[1]
B = A.reshape(1, total_elements)
# or A.reshape(1,9) # Alternative: A.shape = (1,9) # to change the array in place
B
Out[34]:
In [37]:
# Concatenating matrices
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8, 9],[10,11,12]])
C = np.concatenate((A, B), axis=0)
C
Out[37]:
In [38]:
# Concatenating matrices
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8, 9],[10,11,12]])
C = np.concatenate((A, B), axis=1)
C
Out[38]:
In [40]:
# Stacking vectors and matrices
a = np.array([1,2,3])
b = np.array([4,5,6])
np.c_[a,b]
Out[40]:
In [41]:
a = np.array([1,2,3])
b = np.array([4,5,6])
np.r_[a,b]
Out[41]:
In [42]:
# Creating a random m x n matrix
np.random.rand(3,2)
Out[42]:
In [43]:
# Creating a zero m x n matrix
np.zeros((3,2))
Out[43]:
In [45]:
# Creating an m x n matrix of ones
np.ones((3,2),)
Out[45]:
In [48]:
# Creating an identity matrix
np.eye(3)
Out[48]:
In [49]:
# Creating a diagonal matrix
a = np.array([1,2,3])
np.diag(a)
Out[49]:
In [51]:
# Matrix-scalar operations
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
# A + 2; A - 2; A / 2
A * 2
Out[51]:
In [52]:
# Matrix-matrix multiplication
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
np.dot(A,A) # or A.dot(A)
Out[52]:
In [54]:
# Matrix-vector multiplication
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
B = np.array([ [1], [4], [7] ])
np.dot(A,B) # or A.dot(B)
Out[54]:
In [62]:
# Element-wise matrix-matrix operations
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
# A * A
# A + A
# A - A
A / A
Out[62]:
In [64]:
# Matrix elements to power n
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
np.power(A,3)
Out[64]:
In [71]:
# Matrix to power n (matrix-matrix multiplication with itself)
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
np.linalg.matrix_power(A,5)
Out[71]:
In [72]:
# Matrix transpose
A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
A.T
Out[72]:
In [73]:
# Determinant of a matrix: A -> |A|
A = np.array([[6,1,1],[4,-2,5],[2,8,7]])
np.linalg.det(A)
Out[73]:
In [77]:
# Inverse of a matrix
A = np.array([[4, 7], [2, 6]])
I = np.eye(3)
A_inverse = np.linalg.inv(A)
# A * A^-1 should yield the Identity matrix
assert(np.dot(A, A_inverse).all() == I.all())
A_inverse
Out[77]:
In [82]:
from IPython.display import HTML
HTML('<iframe src=http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE width=1000 height=350></iframe>')
Out[82]:
In [83]:
HTML('<iframe src=http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5 width=1000 height=350></iframe>')
Out[83]:
In [78]:
# Calculating a covariance matrix of 3 random variables (here: covariances of the means of x1, x2, and x3)
x1 = np.array([ 4, 4.2, 3.9, 4.3, 4.1])
x2 = np.array([ 2, 2.1, 2, 2.1, 2.2])
x3 = np.array([ 0.6, 0.59, 0.58, 0.62, 0.63])
np.cov([x1, x2, x3])
Out[78]:
In [84]:
HTML('<iframe src=http://zh.wikipedia.org/wiki/%E6%96%B9%E5%B7%AE width=1000 height=350></iframe>')
Out[84]:
In [87]:
np.cov([x1,x1])[0,0]
Out[87]:
In [94]:
# Calculating eigenvectors and eigenvalues
HTML('<iframe src=http://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F width=1000 height=350></iframe>')
Out[94]:
In [89]:
A = np.array([[3, 1], [1, 3]])
eig_val, eig_vec = np.linalg.eig(A)
eig_val
Out[89]:
In [90]:
eig_vec
Out[90]:
In [92]:
# Generating a Gaussion dataset: creating random vectors from the multivariate normal distribution given mean and covariance matrix(here:
# 5 random vectors with mean 0, covariance = 0, variance = 2)
mean = np.array([0,0])
cov = np.array([[2,0],[0,2]])
np.random.multivariate_normal(mean, cov, 5)
Out[92]: