2024-05-03 22:12:52 发布
网友
我需要将数组A的每一行乘以数组B的所有行。例如,假设我们有以下数组:
A = np.array([[1,5],[3,6]]) B = np.array([[4,2],[8,2]])
我想得到以下数组C:
我可以通过使用for循环来实现这一点,但我认为有更好的方法来实现这一点。在
编辑:我想重复和平铺,但我的数组不是那么小。这可能会造成一些记忆问题。在
利用A将A的尺寸扩展到3D,执行元素乘法,并将其整形回2D-
A
3D
2D
(A[:,None]*B).reshape(-1,B.shape[1])
基本上是-
简而言之,它是:
最后整形合并最后两个轴并给我们(M x K*N)形状的2D数组。在
(M x K*N)
我们还可以使用einsum在一个函数调用中执行对3D的扩展和元素乘法-
einsum
np.einsum('ij,kj->ikj',A,B).reshape(-1,B.shape[1])
利用
A
将A
的尺寸扩展到3D
,执行元素乘法,并将其整形回2D
-基本上是-
^{pr2}$简而言之,它是:
^{3}$最后整形合并最后两个轴并给我们
(M x K*N)
形状的2D
数组。在我们还可以使用
einsum
在一个函数调用中执行对3D
的扩展和元素乘法-相关问题 更多 >
编程相关推荐