In Python, we can use the einsum() function of the NumPy package to compute Einstein’s summation convention of two given multidimensional arrays.
Syntax: numpy.einsum(subscripts, *operands, out=None)
Parameters:
subscripts : str
Specifies the subscripts for summation as comma separated list of subscript labels. An implicit (classical Einstein summation) calculation is performed unless the explicit indicator ‘->’ is included as well as subscript labels of the precise output form.
operands : list of array_like
These are the arrays for the operation.
out : ndarray, optional
If provided, the calculation is done into this array.
Returns: The calculation based on the Einstein summation convention.
Example 1: Einstein’s summation convention of two 2X2 matrices
Python3
# Importing library import numpy as np # Creating two 2X2 matrix matrix1 = np.array([[1, 2], [0, 2]]) matrix2 = np.array([[0, 1], [3, 4]]) print("Original matrix:") print(matrix1) print(matrix2) # Output result = np.einsum("mk,kn", matrix1, matrix2) print("Einstein’s summation convention of the two matrix:") print(result) |
Output:
Original matrix: [[1 2] [0 2]] [[0 1] [3 4]] Einstein’s summation convention of the two matrix: [[6 9] [6 8]]
Example 2: Einstein’s summation convention of two 3X3 matrices
Python3
# Importing library import numpy as np # Creating two 3X3 matrix matrix1 = np.array([[2, 3, 5], [4, 0, 2], [0, 6, 8]]) matrix2 = np.array([[0, 1, 5], [3, 4, 4], [8, 3, 0]]) print("Original matrix:") print(matrix1) print(matrix2) # Output result = np.einsum("mk,kn", matrix1, matrix2) print("Einstein’s summation convention of the two matrix:") print(result) |
Output:
Original matrix: [[2 3 5] [4 0 2] [0 6 8]] [[0 1 5] [3 4 4] [8 3 0]] Einstein’s summation convention of the two matrix: [[49 29 22] [16 10 20] [82 48 24]]
Example 3: Einstein’s summation convention of two 4X4 matrices
Python3
# Importing library import numpy as np # Creating two 4X4 matrix matrix1 = np.array([[1, 2, 3, 5], [4, 4, 0, 2], [0, 1, 6, 8], [0, 5, 6, 9]]) matrix2 = np.array([[0, 1, 9, 2], [3, 3, 4, 4], [1, 8, 3, 0], [5, 2, 1, 6]]) print("Original matrix:") print(matrix1) print(matrix2) # Output result = np.einsum("mk,kn", matrix1, matrix2) print("Einstein’s summation convention of the two matrix:") print(result) |
Output:
Original matrix: [[1 2 3 5] [4 4 0 2] [0 1 6 8] [0 5 6 9]] [[0 1 9 2] [3 3 4 4] [1 8 3 0] [5 2 1 6]] Einstein’s summation convention of the two matrix: [[34 41 31 40] [22 20 54 36] [49 67 30 52] [66 81 47 74]]
