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

使用numpy组合具有特定形状的数组

  •  0
  • Gabriel  · 技术社区  · 6 年前

    我试着模仿 aa bb 下面显示的数组使用 zip() for 块:

    import numpy as np
    
    aa = np.random.uniform(0., 1., (3, 566))
    bb = np.random.uniform(0., 1., (3, 566))
    
    cc = []
    for a, b in list(zip(list(zip(*aa)), list(zip(*bb)))):
        cc.append(list(zip(*[a, b])))
    cc = np.array(cc)
    
    print(cc.shape)
    (566, 3, 2)
    

    我试过了 vstack , hstack , column_stack ,它们都与 .reshape() 无济于事。显然,不仅最终的形状应该相等,而且数组本身也应该相等。

    numpy 怎么办?

    1 回复  |  直到 6 年前
        1
  •  1
  •   akuiper    6 年前

    你可以转置 aa bb 然后使用 numpy.dstack ( ),即。 np.dstack([aa.T, bb.T])

    np.dstack([aa.T, bb.T]).shape
    # (566, 3, 2)
    
    (np.dstack([aa.T, bb.T]) == cc).all()
    # True
    

    或使用 np.stack(..., axis=-1)

    (np.stack([aa.T, bb.T], axis=-1) == cc).all()
    # True