在Python中如何将数组的每一行与数组的所有行相乘

2024-05-03 22:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将数组A的每一行乘以数组B的所有行。例如,假设我们有以下数组:

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

我想得到以下数组C

^{pr2}$

我可以通过使用for循环来实现这一点,但我认为有更好的方法来实现这一点。在

编辑:我想重复和平铺,但我的数组不是那么小。这可能会造成一些记忆问题。在


Tags: 方法记忆编辑fornp数组arraypr2
1条回答
网友
1楼 · 发布于 2024-05-03 22:12:52

利用AA的尺寸扩展到3D,执行元素乘法,并将其整形回2D-

(A[:,None]*B).reshape(-1,B.shape[1])

基本上是-

^{pr2}$

简而言之,它是:

^{3}$

最后整形合并最后两个轴并给我们(M x K*N)形状的2D数组。在


我们还可以使用einsum在一个函数调用中执行对3D的扩展和元素乘法-

np.einsum('ij,kj->ikj',A,B).reshape(-1,B.shape[1])

相关问题 更多 >