我有两个名为numpy
和A
的2D B
数组,A
为M x N
且B
为{ {1}}。我的问题是,我希望将M x n
的每一行的与B
的相应行相乘,并创建一个3D矩阵{{1其大小为A
,不使用C
- 循环。
例如,如果M x n x N
是:
for
和A
是
A = np.array([[1, 2, 3],
[4, 5, 6]])
然后得到的乘法B
看起来像
B = np.array([[1, 2],
[3, 4]])
我想要实现的目标是否明确,是否可以在没有任何C = A x B
循环的情况下进行?最好的,tingis
答案 0 :(得分:6)
C=np.einsum('ij,ik->jik',A,B)
答案 1 :(得分:3)
可以通过在每个数组中创建一个新轴并转换修改后的A
:
A[np.newaxis,...].T * B[np.newaxis,...]
给予:
array([[[ 1, 2],
[12, 16]],
[[ 2, 4],
[15, 20]],
[[ 3, 6],
[18, 24]]])