在numpy中将3个一维数组连接在一起

时间:2013-10-29 10:11:05

标签: python arrays matlab numpy

我离开MatLab是为了numpy,一般情况下它还可以,但我正在做一个噩梦,找到一种不错的pythonic方法来做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]])

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

我会使用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]]])

答案 1 :(得分:2)

您可以使用np.c_[A,B,B],即

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

答案 2 :(得分:0)

>>> 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]])