三维数组作为向量和矩阵的乘法

时间:2019-02-07 18:41:50

标签: python arrays numpy

我有一个数组A(形状=(a,1))和矩阵B(形状=(b1,b2))。想要将后者乘以前者的每个元素以生成三维数组(形状=(a,b1,b2))。

有矢量化的方法吗?

import numpy as np
A = np.random.rand(3, 1)
B = np.random.rand(5, 4)
C = np.array([ a * B for a in A ])

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现此目的。 一个正在使用np.dot,请注意,必须在B中引入第二个轴,以便两个ndarrays都可以相乘:

C = np.dot(A,B[:,None])
print(C.shape)
# (3, 5, 4)

按照{divakar的建议,使用np.multiply.outer

C = np.multiply.outer(A,B)
print(C.shape)
# (3, 5, 4)

或者您也可以使用np.einsum

C = np.einsum('ij,kl->ikl', A, B)
print(C.shape)
# (3, 5, 4)