Numpy将数组A的每一列乘以数组B的相应行,而不进行循环

时间:2014-10-08 10:22:23

标签: python numpy

假设我有两个2-d阵列,A和B.A的大小为3x3,B 3x5。我想np.dot第一列A(大小3x1)与第一行B(大小1x5),第二列A和第二行B,依此类推。并返回一个包含3x5 2d数组的2d数组的列表,包含所有结果如何在不使用Python循环的情况下完成此操作?

我目前的解决方案就是这个,这是理想的吗? (a.T [:,:,np.newaxis])*(B [:,np.newaxis,:])

1 个答案:

答案 0 :(得分:0)

您不想计算内部产品dot,而是计算外部产品outer。所以这是一个循环的解决方案:

[np.outer(A[:, i], B[i, :]) for i in range(A.shape[1])]

这样可以,还是你还需要避免这个循环?它可能会变得相当复杂,因为方便的函数outer总是使输入数组变平......