【问题标题】:concatenate two matrices with interleaved columns [duplicate]用交错列连接两个矩阵[重复]
【发布时间】:2018-04-23 05:20:01
【问题描述】:

我有两个二维数组,我想将它们连接起来并交错列

初始数组(每个形状为 (3, 8)):

array([[ 107,  115,  132,  138,  128,  117,  121,135],
       [ 149,  152,  151,  143,  146,  149,  149,148], 
       [ 152,  142,  146 , 141,  143,  148,  149, 153]])

array([[ 25,  28,  28,  25,  23,  21,  20,  18],
       [  3,   3,   2,   2,  10,  12,  12,  1],
       [  1,   0,   2,   0,   0,   0,   0,   1]])

结果(形状为 6x8):

    array([[ 107,  115,  132,  138,  128,  117,  121, 135],
           [  25,   28,   28,   25,   23,   21,   20,  18],
           [ 149,  152,  151,  143,  146,  149,  149, 148], 
           [   3,    3,    2,    2,   10,   12,   12,  13],
           [ 152,  142,  146 , 141,  143,  148,  149, 153]
           [   1,    0,    2,    0,    0,    0,    0,   1]])

我知道应该可以通过一系列重塑来做到这一点,但我不知道怎么做!

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    您可以将两个数组列堆叠,然后重新整形:

    np.column_stack((a, b)).reshape(-1, a.shape[1])
    
    #array([[107, 115, 132, 138, 128, 117, 121, 135],
    #       [ 25,  28,  28,  25,  23,  21,  20,  18],
    #       [149, 152, 151, 143, 146, 149, 149, 148],
    #       [  3,   3,   2,   2,  10,  12,  12,   1],
    #       [152, 142, 146, 141, 143, 148, 149, 153],
    #       [  1,   0,   2,   0,   0,   0,   0,   1]])
    

    或类似:

    np.concatenate((a, b), axis=1).reshape(-1, a.shape[1])
    

    【讨论】:

    • 谢谢!我知道我必须连接和重塑,但我不知道要使用哪些索引。你能解释一下 -1 的用法吗?
    • docs开始,一个形状维度可以是-1。在这种情况下,该值是从数组的长度和剩余维度推断出来的。 所以在这种情况下,它与 .reshape(a.shape[0]*2, a.shape[1]) 相同。
    • 关于reshapestackoverflow.com/a/41777769/12814841中-1的含义,另见这个答案
    猜你喜欢
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2016-04-02
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2014-07-11
    相关资源
    最近更新 更多