En este artículo, busquemos la contracción de Tensor con la convención de suma de Einstein en Python.
método numpy.einsum()
La suma de Einstein es una convención de notación para simplificar fórmulas, como las sumas de vectores, arrays y tensores generales. El método numpy.einsum() de la biblioteca NumPy se usa para encontrar la contracción de Tensor con la convención de suma de Einstein en Python . Muchas operaciones de arrays algebraicas lineales multidimensionales comunes se pueden describir de una manera simple utilizando el método de suma de Einstein que calcula estos valores en modo implícito. Al suprimir o forzar la suma sobre una etiqueta de subíndice definida en modo explícito, nos permite una libertad adicional para calcular operaciones de array alternativas que pueden no considerarse operaciones de suma estándar de Einstein.
Sintaxis: numpy.einsum(subíndices, *operandos, out=Ninguno)
Parámetros:
- subíndices: tipo str. Como una lista separada por comas de etiquetas de subíndices, especifica los subíndices para la suma. A menos que se proporcionen el signo explícito ‘->’ y las etiquetas de subíndice del formulario de salida preciso, se realiza un cálculo implícito (suma clásica de Einstein).
- operandos: lista de array_like. Las arrays para la operación son las siguientes.
- out: ndarray, parámetro opcional. El cálculo se realiza en esta array si se proporciona.
Devoluciones: el resultado es el cálculo basado en la convención de suma de Einstein.
Ejemplo:
Aquí, crearemos dos arrays NumPy utilizando el método np.arange() . Después de eso , se usa el método numpy.einsum() para encontrar la contracción de Tensor con la convención de suma de Einstein en Python. La string ‘ijk, jil ->kl’ se pasará en el parámetro de subíndices del método np.einsum() que representa la contracción del Tensor, se lleva a cabo en las dos arrays y se devuelve el resultado.
Python3
# import packages import numpy as np # np.arange() method is used to create # two arrays arr1 = np.arange(12).reshape(2,2,3) arr2 = np.arange(12).reshape(2,2,3) # Display the arrays print("Array of letters is :",arr1) print("Array of numbers is :",arr2) # Checking the dimensions print("Array one dimension :",arr1.ndim) print("Array two dimension",arr2.ndim) # Checking the shape of the arrays print("Shape of array 1 is : ",arr1.shape) print("Shape of array 2 is : ",arr2.shape) # Tensor contraction with Einstein summation convention print("Tensor contraction : ",np.einsum('ijk,jil->kl', arr1, arr2))
Producción:
Array of letters is : [[[ 0 1 2] [ 3 4 5]] [[ 6 7 8] [ 9 10 11]]] Array of numbers is : [[[ 0 1 2] [ 3 4 5]] [[ 6 7 8] [ 9 10 11]]] Array one dimension : 3 Array two dimension 3 Shape of array 1 is : (2, 2, 3) Shape of array 2 is : (2, 2, 3) Tensor contraction : [[117 135 153] [135 157 179] [153 179 205]]
Publicación traducida automáticamente
Artículo escrito por sarahjane3102 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA