首页 > 解决方案 > Python 使用 einsum 理解数组形状

问题描述

我正在使用 einsum,并且在创建两个 5x2 矩阵的内积时遇到问题,因此结果数组的大小为 (5,)。我能够使用代码: print(np.einsum('ij,kj->ik', A, B)) 创建两个矩阵的叉积,得到 (5,5),我使用了代码: print(np.einsum('ij,ik->ik', A, B)) 创建一个 (5,2)。

我不确定我还能做些什么来创建这两个矩阵的内积来创建大小为 (5,) 的一维数组。我认为我在正确的轨道上,但我不知道还能做什么。

我的代码和输出如下:

import numpy as np

A = np.array([[4, 2],[-3, 3],[-3, -5],[1, -4], [1, 4]])
B = np.array([[-5, 0],[1, 5],[0, 1],[1, -2],[-1, -1]])

print(np.einsum('ij,kj->ik', A, B))
[[-20  14   2   0  -6]
 [ 15  12   3  -9   0]
 [ 15 -28  -5   7   8]
 [ -5 -19  -4   9   3]
 [ -5  21   4  -7  -5]]

print(np.einsum('ij,ik->ik', A, B))
[[-30   0]
 [  0   0]
 [  0  -8]
 [ -3   6]
 [ -5  -5]]

标签: pythonnumpy-einsum

解决方案


推荐阅读