Python 如何将包含n列的矩阵转换为仅包含一列的矩阵?
我正在尝试用python实现一个matlab代码。 我有以下情况: MATLAB代码: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
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[:]
[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