【问题标题】:Concatenate 3 unidimensional arrays together in numpy在 numpy 中将 3 个一维数组连接在一起
【发布时间】:2013-10-29 10:11:05
【问题描述】:

我要离开 MatLab 去学习 numpy,总的来说一切正常,但我正在做噩梦,找到一种很好的 Python 方式来完成在 MatLab 中可以做到的事情:

A=[1.0;2.0;3.0;4.0] %Column vector
B=[5.0;6.0;7.0;8.0] %Another one
C=[A,B,B] %4 x 3 matrix

在 Python 中,像这样设置 A:

A=np.array([1,2,3,4])
B=np.array([5,6,7,8])

并像这样连接:

C=np.concatenate((A,B,B),axis=1)

将它们一个一个堆叠起来,_C、hstack 等也会失败。我猜我需要一种很好的 pyythonic 方式将 (4,) numpy 数组转换为 (4,1) 数组。在我的代码中,这些向量比这大得多,并且是动态创建的,所以我不能只输入:

A=np.array([[1],[2],[3],[4]])

提前感谢您的帮助!

【问题讨论】:

    标签: python arrays matlab numpy


    【解决方案1】:

    我会使用dstack

    >>> A=np.array([1,2,3,4])
    >>> B=np.array([5,6,7,8])
    >>> np.dstack((A, B, B))
    array([[[1, 5, 5],
            [2, 6, 6],
            [3, 7, 7],
            [4, 8, 8]]])
    

    【讨论】:

      【解决方案2】:

      你可以使用np.c_[A,B,B],它给出了

      array([[1, 5, 5],
             [2, 6, 6],
             [3, 7, 7],
             [4, 8, 8]])
      

      【讨论】:

      • 谢谢,这行得通。一旦我分析了我的代码,我将添加一些更快的方法和 atomh33ls 方法。
      【解决方案3】:
      >>> C=np.array([A,B,B])
      >>> C
      array([[1, 2, 3, 4],
             [5, 6, 7, 8],
             [5, 6, 7, 8]])
      

      或:

      >>> C=np.array([A,B,B]).swapaxes(1,0)
      >>> C
      array([[1, 5, 5],
             [2, 6, 6],
             [3, 7, 7],
             [4, 8, 8]])
      

      【讨论】:

      • 谢谢,这行得通。一旦我分析了我的代码,我将添加一些更快的方法和 Christoph 的方法。
      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2012-03-03
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2020-01-03
      相关资源
      最近更新 更多