在Python中使用NumPy的向量外积与爱因斯坦求和惯例
在这篇文章中,我们将在Python中找到带有爱因斯坦求和惯例的向量外积。
numpy.einsum() 方法
NumPy库中的numpy.einsum()方法是用Python中的爱因斯坦求和惯例来寻找向量外积。许多常见的多维线性代数数组操作可以用爱因斯坦求和方法来简单描述,它以隐式模式计算这些数值。通过抑制或强制在显式模式下对定义的下标标签进行求和,它允许我们有额外的自由来计算可能不被认为是标准的爱因斯坦求和操作的其他数组操作。
语法: numpy.einsum(subscripts, *operands, out=None)
参数:
- subscripts: str type.作为一个逗号分隔的下标标签列表,指定用于求和的下标。除非给出明确的符号’->’和精确输出形式的下标标签,否则将进行隐式(经典的爱因斯坦求和)计算。
- operands:array_like的列表。该操作的数组如下。
- out: ndarray, 可选参数。如果提供了这个数组,计算将在这个数组中完成。
返回:基于爱因斯坦求和惯例的计算是输出。
示例 1
这里,我们将使用np.arrange()方法创建一个NumPy数组。之后使用numpy.einsum()方法,用Python中的爱因斯坦求和惯例找到向量外积。在np.einsum()方法中传递的字符串’i’, ‘j’代表向量外积,向量外积是在np.einsum()方法中对形成的数组和[1,2,3]数组进行的。
# import packages
import numpy as np
# Creating an array
array = np.arange(10)
print(array)
# shape of the array is
print("Shape of the array is : ", array.shape)
# dimension of the array
print("The dimension of the array is : ", array.ndim)
# Datatype of the array
print("Datatype of our Array is : ", array.dtype)
# vector outer product using np.einsum()
# method
print(np.einsum('i,j', [1, 2, 3], array))
输出:
[0 1 2 3 4 5 6 7 8 9]
Shape of the array is : (10,)
The dimension of the array is : 1
Datatype of our Array is : int64
[[ 0 1 2 3 4 5 6 7 8 9]
[ 0 2 4 6 8 10 12 14 16 18]
[ 0 3 6 9 12 15 18 21 24 27]]
示例 2
在这个例子中,我们将用另一种方法检查向量外积,我们将看到使用np.outer()方法将得到相同的输出。
# import packages
import numpy as np
# vector outer product
print(np.outer([1, 2, 3], array))
输出:
[[ 0 1 2 3 4 5 6 7 8 9]
[ 0 2 4 6 8 10 12 14 16 18]
[ 0 3 6 9 12 15 18 21 24 27]]