np.einsum
时间: 2023-07-04 19:05:20 浏览: 181
`np.einsum` 是 NumPy 中的一个函数,可以用来执行高效的张量操作。它的全称是 "Einstein summation",因为它基于爱因斯坦的求和约定符号。它的语法如下:
```python
numpy.einsum(subscript, *operands, out=None, dtype=None, order='K', casting='safe', optimize=True)
```
其中,`subscript` 是一个字符串,它描述了对操作数的操作。`operands` 是一个或多个张量,它们将被操作。`out` 是可选的输出数组。`dtype` 是可选的输出数据类型。`order` 是可选的输出数组的内存布局顺序。`casting` 是可选的转换策略。`optimize` 是一个布尔值,表示是否应该在执行操作之前优化计算。
下面是一个使用 `np.einsum` 的例子:
```python
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 计算矩阵乘积
c = np.einsum('ij,jk->ik', a, b)
print(c)
# 输出:[[19 22]
# [43 50]]
```
在这个例子中,我们使用 `np.einsum` 计算了两个矩阵的乘积。`'ij,jk->ik'` 描述了操作,其中 `'ij'` 表示第一个矩阵的行和列,`'jk'` 表示第二个矩阵的行和列,`'->ik'` 表示输出矩阵的行和列。因此,这个操作等价于 `c = np.dot(a, b)`。
阅读全文