【问题标题】:Numpy concatenate arrays with interleaving具有交错的 Numpy 连接数组
【发布时间】:2018-05-05 23:03:26
【问题描述】:

我有 4 个数组,我想通过交错将它们连接成一个数组。我该怎么做?

>>> import numpy as np
>>> a = np.tile(0,(5,2))
>>> b = np.tile(1,(5,2))
>>> c = np.tile(2,(5,2))
>>> d = np.tile(3,(5,2))
>>> e = np.concatenate((a,b,c,d),axis=1)
>>> e
    array([[0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3]])

这只是连接。

但是,我想要的输出是:

>>> desired_output
    array([[0, 1, 2, 3, 0, 1, 2, 3],
           [0, 1, 2, 3, 0, 1, 2, 3],
           [0, 1, 2, 3, 0, 1, 2, 3],
           [0, 1, 2, 3, 0, 1, 2, 3],
           [0, 1, 2, 3, 0, 1, 2, 3]])

我的意思是我知道我可以使用以下命令从 e 中选择交错列:

>>> f = e[:, ::2]
>>> array([[0, 1, 2, 3],
           [0, 1, 2, 3],
           [0, 1, 2, 3],
           [0, 1, 2, 3],
           [0, 1, 2, 3]])

但是我该如何做一个大数组呢?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    使用np.dstacknp.stack 沿最后一个轴堆叠,为我们提供3D 数组,然后重新整形为2D -

    np.dstack([a,b,c,d]).reshape(a.shape[0],-1)
    np.stack([a,b,c,d],axis=2).reshape(a.shape[0],-1)
    

    【讨论】:

    • 甜!!谢啦!那真的很快。你这样做是为了谋生还是什么? =)
    • @bFig8 主要是 ;)
    • @bFig8 如果你问的是-1,这里有一些帮助 - stackoverflow.com/questions/41776579
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 2017-06-18
    • 2016-05-20
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2012-07-31
    • 2020-08-24
    相关资源
    最近更新 更多