【问题标题】:python append two matrix side by side [duplicate]python并排附加两个矩阵[重复]
【发布时间】:2017-09-06 03:20:12
【问题描述】:

我在使用 python 时遇到了一些问题。

    A= [ [1,2,3]
         [4,5,6]
       ]

   B = [ [10,11]
         [12,13]
       ]

我想拥有:

   C = [A B]
     = [ [1,2,3,  10, 11]
         [4,5,6,  12, 13]
       ]

如何在 python 中做到这一点?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    此外,将np.concatenateaxis=1 结合使用将比使用numpy.hstack4 倍

    In [207]: np.concatenate((A, B), axis=1)
    Out[207]: 
    array([[ 1,  2,  3, 10, 11],
           [ 4,  5,  6, 12, 13]])
    

    如果您关心性能,np.concatenate 才是真正的战马。

    In [215]: %timeit np.concatenate((A, B), 1)
    The slowest run took 12.10 times longer than the fastest.
    100000 loops, best of 3: 3.1 µs per loop
    
    In [214]: %timeit np.hstack((A,B))
    The slowest run took 6.85 times longer than the fastest.
    100000 loops, best of 3: 12.5 µs per loop
    
    In [216]: %timeit np.c_[A, B]
    10000 loops, best of 3: 48.7 µs per loop
    

    【讨论】:

    • 或许值得一提的是,np.hstack 实际上使用了np.concatenate,因此它永远不会更快。我们应该更喜欢使用更高级别的 API,除非需要最大性能。
    【解决方案2】:

    不知道您是在询问 numpy 数组(根据您的标签)还是列表列表(根据您的标题的矩阵)...但是:

    要连接列表,您只需将它们添加在一起:

    A = [[1,2,3],[4,5,6]]
    B = [[10,11],[12,13]]
    C = [A[0]+B[0],A[1]+B[1]]
    
    print C
    
    >>>
    [[1, 2, 3, 10, 11], [4, 5, 6, 12, 13]]
    

    如果你有数组开头,你可以使用 append 方法:

    import numpy as np
    A = np.array([[1,2,3],[4,5,6]])
    B = np.array([[10,11],[12,13]])
    C = np.array([np.append(A[0],B[0]),np.append(A[1],B[1])])
    
    print C
    
    >>>
    [[ 1  2  3 10 11]
     [ 4  5  6 12 13]]
    

    【讨论】:

      【解决方案3】:

      你可以这样做,基本上是在压缩的 (A, B) 对象中添加每个列表:

      >>> [x + y for x, y in zip(A, B)]
      [[1, 2, 3, 10, 11], [4, 5, 6, 12, 13]]
      

      【讨论】:

        【解决方案4】:

        您正在描述np.hstack 的基本用法。

        np.hstack((A, B))
        

        还有一个等价的索引技巧:

        np.c_[A, B]
        

        【讨论】:

          猜你喜欢
          • 2020-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-01
          相关资源
          最近更新 更多