我离开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]])
提前感谢您的帮助!
答案 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]])