代码之家  ›  专栏  ›  技术社区  ›  Nico Schlömer David Maze

一次计算所有外积[重复]

  •  3
  • Nico Schlömer David Maze  · 技术社区  · 7 年前

    a 形状 (n, k1) b 形状 (n, k2) ,我想计算 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 .

    外积可以立即计算吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   cs95    7 年前
    np.einsum('ij,ik->ijk', a, b)
    

    或者,使用广播,

    a[:,:,np.newaxis] * b[:,np.newaxis,:]