Python is extremely well equipped to deal with math problems. Here we will focus on features from the Numpy package.
It pays off to invest some time in really understanding the power of the Numpy library - before you start coding something that might already be available in the package. Creation and manipulation of matrices, calculating products of vectors and matrices, calculation inverse matrices, it is all there - and without having to write for loops.
Numpy is used in many advanced Python packages. It is the de facto standard for mathematical operations.
Below are a few of the Numpy features that I use frequently.
import numpy as np arr = np.array([1, 2, 3]) mat = np.array([[1, 2, 3], [4, 6, 5], [7, 8, 9]]) # Multiplication of array and matrix, without the use of for loops prod1 = arr * mat # Multiplication of matrix * transposed array # (should be equal to previous answer) prod2 = mat * np.transpose(arr) prod3 = 3 * prod1 # Elementwise multiplication prod4 = prod1.dot(prod2) # Matrixwise multiplication # Matrixwise multiplication of matrix with its inverse should lead # to identity matrix (with almost-zeros off the diagonal). prod5 = np.dot(mat, np.linalg.inv(mat)) # Identity creates an identity matrix. prod6 = np.identity(3) # Creating, then reshaping an array m= np.arange(10).reshape(2,5) print('Initial array = \n', arr) print('Initial matrix = \n', mat) print('prod1 = \n', prod1) print('prod2 = \n', prod2) print('prod3 = \n', prod3) print('prod4 = \n', prod4) print('prod5 = \n', prod5) print('prod6 = \n', prod6) print('m = \n', m)