【发布时间】:2018-02-17 04:46:54
【问题描述】:
给定一个形状为(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 的速度。
可以一次计算外积吗?
【问题讨论】:
-
哪种算法不用计算n次就可以计算出来?与其寻找另一种算法,我认为创建一个固定大小的
numpy.array,然后使用多个处理来加速计算是一个更好的解决方案。例如,用numexpr计算numpy.outer。