给定一个形状为 (n, k1)
的数组 a
和一个形状为 (n, k2)
的数组 b
,我想计算所有 a[i]
和 b[i]
的外积。
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)
这个做法可以完成任务,但它包含了一个Python循环,对于较大的n
会拖慢速度。
能否一次计算所有外积?
numpy.array
,然后使用多个进程加速计算是更好的解决方案。例如,使用numexpr
计算numpy.outer
。 - Sraw