[英]Multiplying two 2D numpy arrays to a 3D array
我有两个名为A
和B
2D numpy
数组,其中A
是M x N
, B
是M xn
。 我的问题是我希望将每行 B
每个元素与A
相应行相乘,并创建一个大小为M xnx N
的3D矩阵C
,而不使用for
-loops。
例如,如果A
是:
A = np.array([[1, 2, 3],
[4, 5, 6]])
而B
是
B = np.array([[1, 2],
[3, 4]])
然后得到的乘法C = A x B
看起来像
C = [
[[1, 2],
[12, 16]],
[[2, 4],
[15, 20]],
[[3, 6],
[18, 24]]
]
是否清楚我想要实现的目标,是否可以在没有任何for
-loops的情况下for
? 最好的,tingis
C=np.einsum('ij,ik->jik',A,B)
可以通过在每个数组中创建一个新轴并转置修改后的A
:
A[np.newaxis,...].T * B[np.newaxis,...]
赠送:
array([[[ 1, 2],
[12, 16]],
[[ 2, 4],
[15, 20]],
[[ 3, 6],
[18, 24]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.