假设我有一堆矩阵A和向量b。
当我执行np.inner(As, bs)时,会得到以下结果:
As = array([[[1, 7], [3, 8]],
[[2, 1], [5, 9]],
[[7, 2], [8, 3]]])
bs = array([[8, 0], [8, 8], [7, 3]])
当我执行np.inner(As, bs)时,会得到以下结果:
array([[[ 8, 64, 28], [ 24, 88, 45]],
[[ 16, 24, 17], [ 40, 112, 62]],
[[ 56, 72, 55], [ 64, 88, 65]]])
但我不需要所有的内积。我的需求是,每个矩阵只需与每个向量计算一次。
我可以这样做:
np.array(map(lambda (a, b): np.inner(a, b), zip(As, bs)))
然后我得到了预期的矩阵:
array([[ 8, 24], [ 24, 112], [ 55, 65]])
现在我不想使用zip、map等方式,因为我需要执行这个操作超过10**6次(用于图像处理,确切地说是用于GMM)。 有没有办法可以使用numpy、scipy等库来为我完成此操作?(快速且高效)