Skip to main content
Documents
basicsArray CreationArray OperationsArray Computation & AnalysisLinear AlgebraRandom ProbabilityData Input/Output & Conversion

NumPy Matrix Multiplication

Linear Algebra in NumPy is a mathematical discipline used for computations involving matrices and vectors. It is commonly applied in scientific computing, data analysis, machine learning, and engineering to perform operations like matrix multiplication, solving linear systems, and eigenvalue problems.

Usage

Matrix multiplication in NumPy is used when you need to perform dot product operations between two matrices or a matrix and a vector. The numpy.matmul() or the @ operator can be used for this purpose. np.matmul() and @ are specifically designed for matrix multiplication, while np.dot() can handle both dot products of vectors and matrix multiplication but follows different rules with higher-dimensional arrays.

import numpy as np

result = np.matmul(matrix_a, matrix_b)
# or
result = matrix_a @ matrix_b

In these syntaxes, matrix_a and matrix_b are arrays or matrices to be multiplied, producing a new matrix as the result. For higher-dimensional arrays, np.matmul() and @ handle the last two dimensions as matrices and broadcast the remaining dimensions, unlike np.dot(), which performs a more general dot product.

Examples

1. Basic Matrix Multiplication

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

result = np.matmul(A, B)
print(result)  # Output shape: (2, 2)

This example multiplies two 2x2 matrices, A and B, yielding a new 2x2 matrix.

2. Matrix-Vector Multiplication

import numpy as np

A = np.array([[1, 2], [3, 4]])
v = np.array([5, 6])

result = np.matmul(A, v)
print(result)  # Output shape: (2,)

Here, a 2x2 matrix A is multiplied by a vector v, resulting in a vector whose elements are the dot products of v with the rows of A.

3. Broadcasting with Matrix Multiplication

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])

result = np.matmul(A, B.reshape(-1, 1))
print(result)  # Output shape: (2, 1)

This example demonstrates using broadcasting by reshaping B to a column vector for matrix-vector multiplication. Broadcasting in this context refers to the automatic expansion of dimensions to enable element-wise operations.

Tips and Best Practices

  • Ensure dimensional compatibility. The number of columns in the first matrix must equal the number of rows in the second matrix for multiplication.
  • Use the @ operator for simplicity. It is a concise and readable alternative to np.matmul() for matrix multiplication.
  • Leverage NumPy's broadcasting. When multiplying matrices and vectors, ensure they are aligned properly, using reshaping if necessary.
  • Profile large operations. For large-scale computations, consider profiling your code to optimize performance and memory usage. You can also explore np.einsum for more complex operations.
  • Beware of common errors. Mismatched dimensions and incompatible data types can lead to unexpected behavior.
  • Check data types. Ensure that input matrices are of compatible data types to avoid errors and maintain performance.