2

我要为 numpy 离开 MatLab,一般情况下一切正常,但我正在做噩梦,找到一个很好的 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]])

提前感谢您的帮助!

4

3 回答 3

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]]])
于 2013-10-29T10:22:50.623 回答
2

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

array([[1, 5, 5],
       [2, 6, 6],
       [3, 7, 7],
       [4, 8, 8]])
于 2013-10-29T10:20:03.243 回答
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]])
于 2013-10-29T10:38:07.960 回答