Python 如何将包含n列的矩阵转换为仅包含一列的矩阵?

Python 如何将包含n列的矩阵转换为仅包含一列的矩阵?,python,matlab,numpy,matrix,Python,Matlab,Numpy,Matrix,我正在尝试用python实现一个matlab代码。 我有以下情况: MATLAB代码: A = a b c d A=A(:) A = a e f g h e b f

我正在尝试用python实现一个matlab代码。 我有以下情况:

MATLAB代码:

    A = a b c d          A=A(:)        A = a
        e f g h                            e 
                                           b   
                                           f
                                           c
                                           g
                                           d
                                           h

如何在Python中获得相同的结果,MxN numpy矩阵?

在Python中,如果您使用numpy,这是高度推荐的操作矩阵,请使用重塑:

A.重塑(-1))
#或者像马克·迈耶说的那样变平
A.展平()

如果您使用的是
numpy

A.flatten()
会导致

[[a b c d e f g h]]
你可以用

A.transpose().flatten()
得到

[[a e b f c g d h]]
八度:

>> A = 1:8;
>> reshape(A,2,4)
ans =

   1   3   5   7
   2   4   6   8

>> reshape(A,2,4)(:)
ans =

   1
   2
   3
   4
   5
   6
   7
   8

>> reshape(A,2,4)(:).'
ans =

   1   2   3   4   5   6   7   8
在努比(伊皮顿)

np.ravel
有一个很好的文档。同样
np.重塑

In [15]: A.reshape(-1,1)           # (8,1) shape ; octave reshape(A,[],1)                                                       
Out[15]: 
array([[1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8]])
In [16]: A.reshape(-1,1,order='F')                                                                           
Out[16]: 
array([[1],
       [5],
       [2],
       [6],
       [3],
       [7],
       [4],
       [8]])
In [17]: A.reshape(-1,1,order='F').T      # transpose                                                                   
Out[17]: array([[1, 5, 2, 6, 3, 7, 4, 8]])  # (1,8) shape
主要区别:

  • 默认情况下,Python的顺序是C
  • Python可能是1d(甚至是0)
  • 没有等价物(:)
    A[:]
    不会改变事情

您正在使用numpy吗?你真的想要一列还是仅仅展平-python数组是在行之前的,因此一列将是一组单项目行。这是numpy数组还是python列表列表?这是numpy数组这些方法不会将其展平到
[ab c d e f g h]
而不是
[ae b f c g d h]
?重塑和展平方法有一个参数order:“C”表示按行主(C样式)顺序展平F'表示按主列(Fortran风格)顺序展平“如果
A
在内存中是Fortran连续的,则表示按列主顺序展平,否则按行主顺序展平。”K'表示按元素在内存中出现的顺序展平
a
。默认值为“C”。
In [15]: A.reshape(-1,1)           # (8,1) shape ; octave reshape(A,[],1)                                                       
Out[15]: 
array([[1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8]])
In [16]: A.reshape(-1,1,order='F')                                                                           
Out[16]: 
array([[1],
       [5],
       [2],
       [6],
       [3],
       [7],
       [4],
       [8]])
In [17]: A.reshape(-1,1,order='F').T      # transpose                                                                   
Out[17]: array([[1, 5, 2, 6, 3, 7, 4, 8]])  # (1,8) shape