给定形状a
的数组(n, k1)
和形状b
的数组(n, k2)
,我想计算a[i]
和{的所有外部产品{1}}。这个
b[i]
可以解决问题,但它包含一个Python循环,可以减慢大import numpy
n = 3
a = numpy.random.rand(n, 7)
b = numpy.random.rand(n, 11)
out = numpy.array([
numpy.outer(a[i], b[i]) for i in range(n)
])
print(out.shape) # (n, 7, 11)
的速度。
可以立即计算外部产品吗?
答案 0 :(得分:2)
np.einsum('ij,ik->ijk', a, b)
或者,使用广播,
a[:,:,np.newaxis] * b[:,np.newaxis,:]