Numpy Tutorial
Creating NumPy Array
NumPy Array Manipulation
Matrix in NumPy
Operations on NumPy Array
Reshaping NumPy Array
Indexing NumPy Array
Arithmetic operations on NumPy Array
Linear Algebra in NumPy Array
NumPy and Random Data
Sorting and Searching in NumPy Array
Universal Functions
Working With Images
Projects and Applications with NumPy
Matrix multiplication, also known as the dot product, is a fundamental operation in linear algebra. In this tutorial, we'll explore how to perform matrix multiplication using NumPy in Python.
Ensure you have NumPy installed:
pip install numpy
Then, import the necessary library:
import numpy as np
For one-dimensional arrays, the dot product is equivalent to the inner product of vectors.
a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) result = np.dot(a, b) print(result) # Outputs: 32 (1*4 + 2*5 + 3*6)
Matrix multiplication is only valid when the number of columns in the first matrix is equal to the number of rows in the second matrix.
A = np.array([[1, 2], [3, 4]]) B = np.array([[2, 0], [1, 3]]) result = np.dot(A, B) print(result) # Outputs: # [[4 6] # [10 12]]
matmul
function:You can also use the matmul
function for matrix multiplication, which is more intuitive for some users:
result = np.matmul(A, B) print(result) # Outputs: # [[4 6] # [10 12]]
@
operator:Starting from Python 3.5 and NumPy 1.10, you can use the @
operator, which was introduced specifically for matrix multiplication:
result = A @ B print(result) # Outputs: # [[4 6] # [10 12]]
To perform element-wise multiplication, use the *
operator. Remember, both matrices should have the same shape:
A = np.array([[1, 2], [3, 4]]) B = np.array([[2, 2], [2, 2]]) result = A * B print(result) # Outputs: # [[2 4] # [6 8]]
Note: This is not a dot product. Each element in the resulting matrix is the product of elements at corresponding positions in the input matrices.
Compute the outer product of two vectors:
a = np.array([1, 2]) b = np.array([3, 4]) result = np.outer(a, b) print(result) # Outputs: # [[3 4] # [6 8]]
NumPy can handle operations on arrays of different shapes. The smaller array is broadcasted over the larger array to match their shapes:
A = np.array([[1, 2], [3, 4], [5, 6]]) b = np.array([2, 2]) result = A @ b print(result) # Outputs: [ 5 11 17]
Matrix multiplication is fundamental in many areas including graphics transformations, solving systems of linear equations, and machine learning. NumPy provides a variety of ways to perform these operations, ensuring that users can find a method that is intuitive and clear for their particular use-case.
Description: Matrix multiplication is a fundamental operation in linear algebra. In NumPy, you can use np.dot
or the @
operator for matrix multiplication.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Matrix multiplication using np.dot result_dot = np.dot(matrix1, matrix2) # Matrix multiplication using @ operator result_operator = matrix1 @ matrix2 print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Matrix Multiplication using np.dot:") print(result_dot) print("Matrix Multiplication using @ operator:") print(result_operator)
Description: Multiplying matrices involves taking the dot product of corresponding rows and columns.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Matrix multiplication using np.dot result = np.dot(matrix1, matrix2) print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Matrix Multiplication Result:") print(result)
Description: The dot product of matrices is obtained using the np.dot
function or the @
operator.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Dot product using np.dot dot_product = np.dot(matrix1, matrix2) # Dot product using @ operator dot_product_operator = matrix1 @ matrix2 print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Dot Product using np.dot:") print(dot_product) print("Dot Product using @ operator:") print(dot_product_operator)
Description: Element-wise multiplication operates on corresponding elements, while matrix multiplication follows the standard linear algebra rules.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Element-wise multiplication elementwise_mult = matrix1 * matrix2 # Matrix multiplication matrix_mult = np.dot(matrix1, matrix2) print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Element-wise Multiplication:") print(elementwise_mult) print("Matrix Multiplication:") print(matrix_mult)
Description: The np.matmul
function in NumPy performs matrix multiplication.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Matrix multiplication using np.matmul result_matmul = np.matmul(matrix1, matrix2) print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Matrix Multiplication using np.matmul:") print(result_matmul)
Description: Examples of matrix multiplication with different matrices.
Code:
import numpy as np # Example 1 matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) result1 = np.dot(matrix1, matrix2) # Example 2 matrix3 = np.array([[1, 2, 3], [4, 5, 6]]) matrix4 = np.array([[7, 8], [9, 10], [11, 12]]) result2 = np.dot(matrix3, matrix4) print("Example 1 - Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Result 1:") print(result1) print("Example 2 - Matrix 3:") print(matrix3) print("Matrix 4:") print(matrix4) print("Result 2:") print(result2)
Description: Broadcasting allows NumPy to perform element-wise operations on arrays of different shapes.
Code:
import numpy as np # Create a matrix and a scalar matrix = np.array([[1, 2], [3, 4]]) scalar = 2 # Broadcasting in matrix multiplication result_broadcasting = matrix * scalar print("Matrix:") print(matrix) print("Scalar:") print(scalar) print("Result with Broadcasting:") print(result_broadcasting)
Description: The np.einsum
function in NumPy provides a powerful way to perform advanced matrix operations.
Code:
import numpy as np # Create two matrices matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Matrix multiplication using np.einsum result_einsum = np.einsum('ij,jk->ik', matrix1, matrix2) print("Matrix 1:") print(matrix1) print("Matrix 2:") print(matrix2) print("Matrix Multiplication using np.einsum:") print(result_einsum)
Description: NumPy provides efficient implementations for matrix multiplication using optimized libraries.
Code:
import numpy as np # Create large matrices matrix1 = np.random.rand(1000, 1000) matrix2 = np.random.rand(1000, 1000) # Efficient matrix multiplication result_efficient = np.dot(matrix1, matrix2) print("Efficient Matrix Multiplication Result:") print(result_efficient)