 ###### Positional-only and Keyword-only arguments in Python
2021-06-18 ###### Data selection (indexing and slicing) in Pandas MultiIndex DataFrames
2021-06-24

Click on the links to get the high-resolution cheat sheets.

# Jupyter Notebook

## Reference for Linear Algebra Operations in NumPy

The Python numerical computation library called NumPy provides many linear algebra functions that may be useful for a machine learning practitioner. In this tutorial, you will discover the key functions for working with vectors and matrices that you may find useful as a machine learning practitioner.

### Overview

1. Arrays
2. Vectors
3. Matrices
4. Types of Matrices
5. Matrix Operations
6. Matrix Factorization
7. Statistics

## 1. Arrays

There are many ways to create NumPy arrays.

### Array

```from numpy import array
A = array([[1,2,3],[1,2,3],[1,2,3]])
```

### Empty

```from numpy import empty
A = empty([3,3])
```

### Zeros

```from numpy import zeros
A = zeros([3,5])
```

### Ones

```from numpy import ones
A = ones([5, 5])
```

## 2. Vectors

A vector is a list or column of scalars.

```c = a + b
```

### Vector Subtraction

```c = a - b
```

### Vector Multiplication

```c = a * b
```

### Vector Division

```c = a / b
```

### Vector Dot Product

```c = a.dot(b)
c = a @ b
```

### Vector-Scalar Multiplication

```c = a * 2.2
```

### Vector Norm

from numpy.linalg import norm
l2 = norm(v)

## 3. Matrices

A matrix is a two-dimensional array of scalars.

```C = A + B
```

### Matrix Subtraction

```C = A - B
```

```C = A * B
```

### Matrix Division

```C = A / B
```

### Matrix-Matrix Multiplication (Dot Product)

```C = A.dot(B)
C = A @ B
```

### Matrix-Vector Multiplication (Dot Product)

```C = A.dot(b)
C = A @ b
```

C = A.dot(2.2)
C = A * 2.2

## 4. Types of Matrices

Different types of matrices are often used as elements in broader calculations.

### Triangle Matrix

```# lowerfrom numpy import tril
lower = tril(M)
# upperfrom numpy import triu
upper = triu(M)
```

### Diagonal Matrix

```from numpy import diag
d = diag(M)
```

### Identity Matrix

from numpy import eye
I = eye(3)

## 5. Matrix Operations

Matrix operations are often used as elements in broader calculations.

### Matrix Transpose

```B = A.T
```

### Matrix Inversion

```from numpy.linalg import inv
B = inv(A)
```

### Matrix Trace

```from numpy import trace
B = trace(A)
```

### Matrix Determinant

```from numpy.linalg import det
B = det(A)
```

### Matrix Rank

```from numpy.linalg import matrix_rank
r = matrix_rank(A)
```

## 6. Matrix Factorization

Matrix factorization, or matrix decomposition, breaks a matrix down into its constituent parts to make other operations simpler and more numerically stable.

### LU Decomposition

```from scipy.linalg import lu
P, L, U = lu(A)
```

### QR Decomposition

```from numpy.linalg import qr
Q, R = qr(A, 'complete')
```

### Eigendecomposition

```from numpy.linalg import eig
values, vectors = eig(A)
```

### Singular-Value Decomposition

```from scipy.linalg import svd
U, s, V = svd(A)
```

## 7. Statistics

Statistics summarize the contents of vectors or matrices and are often used as components in broader operations.

### Mean

```from numpy import mean
result = mean(v)
```

### Variance

```from numpy import var
result = var(v, ddof=1)
```

### Standard Deviation

```from numpy import std
result = std(v, ddof=1)
```

### Covariance Matrix

```from numpy import cov
sigma = cov(v1, v2)
```

### Linear Least Squares

```from numpy.linalg import lstsq
b = lstsq(X, y)
```

Source:

https://medium.com/analytics-vidhya/data-science-cheat-sheets-109ddcb1aca8

https://machinelearningmastery.com/linear-algebra-cheat-sheet-for-machine-learning/ ##### Amir Masoud Sefidian
Machine Learning Engineer