代码之家  ›  专栏  ›  技术社区  ›  Jane Sully

串联numpy数组并获得所需形状

  •  0
  • Jane Sully  · 技术社区  · 7 年前

    假设一个numpy数组a=[1,2,3,4,5],另一个numpy数组b=[6,7,8,9,10]。如何连接数组并创建形状(5,2)的numpy数组。我两个都试过了。row_堆栈和np。vstack(做同样的事情),但这只会产生形状(2,5)的np数组。如何避免这种情况并获得所需的连接?

    比你强!

    2 回复  |  直到 7 年前
        1
  •  2
  •   cs95 abhishek58g    7 年前

    np.vstack 就是这样,你只需要在之后添加一个换位步骤。

    c = np.vstack((a, b)).T
    print(c)    
    array([[ 1,  6],
           [ 2,  7],
           [ 3,  8],
           [ 4,  9],
           [ 5, 10]])
    
    print(c.shape)
    (5, 2)
    

    djk47463 mentioned np.array 建造师( 如果他们决定发布,将删除

    c = np.array([a,b]).T
    print(c) 
    array([[ 1,  6],
           [ 2,  7],
           [ 3,  8],
           [ 4,  9],
           [ 5, 10]])
    
        2
  •  2
  •   hpaulj    7 年前

    新潮的 np.stack 提供对新轴的更多控制:

    In [37]: a = [1,2,3,4,5]
    In [38]: b = [6,7,8,9,10]
    In [39]: np.stack((a,b), axis=1)
    Out[39]: 
    array([[ 1,  6],
           [ 2,  7],
           [ 3,  8],
           [ 4,  9],
           [ 5, 10]])
    In [40]: _.shape
    Out[40]: (5, 2)
    

    默认情况下 axis=0 ,其行为类似于 np.array ,生成(2,5)数组。

    vstack 文档注释:

    np.concatenate np。堆栈

    我认为这夸大了事实,但是, stack 是我最喜欢的新功能之一。我还建议查看类似函数的Python代码。大多数人最终使用 concatenate