我有一个数组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 ])
答案 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)