代码之家  ›  专栏  ›  技术社区  ›  Him

numpy沿第一个轴添加

  •  3
  • Him  · 技术社区  · 7 年前

    非矢量化解决方案:

    x = np.array([[[1,2],[3,4],[5,6]],[[7,8],[9,0],[1,2]],[[3,4],[5,6],[7,8]],[[9,0],[1,2],[3,4]]]) #shape (4,3,2)
    y = np.array([[1,2],[3,4],[5,6]]) #shape (3,2)
    
    ans = np.empty(x.shape)
    for i in range(x.shape[0]):
        ans[i] = x[i] + y
    
    print(ans) #shape (4,3,2)
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   willeM_ Van Onsem    7 年前

    由于 broadcasting [numpy-doc] ,您可以简单地使用:

    x + y
    

    i、 j、k

    ijk公司 jk公司

    这将提供:

    >>> x + y
    array([[[ 2,  4],
            [ 6,  8],
            [10, 12]],
    
           [[ 8, 10],
            [12,  4],
            [ 6,  8]],
    
           [[ 4,  6],
            [ 8, 10],
            [12, 14]],
    
           [[10,  2],
            [ 4,  6],
            [ 8, 10]]])
    >>> (x + y).shape
    (4, 3, 2)
    

    你可以“引进”额外的尺寸 y 在任意位置,比如 this answer “广播”一个特定的维度。