假设我有两个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,:])
答案 0 :(得分:0)
您不想计算内部产品dot
,而是计算外部产品outer
。所以这是一个循环的解决方案:
[np.outer(A[:, i], B[i, :]) for i in range(A.shape[1])]
这样可以,还是你还需要避免这个循环?它可能会变得相当复杂,因为方便的函数outer
总是使输入数组变平......