>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> # one way to get Matlab behaivor
... (a.T).ravel()
array([1, 4, 2, 5, 3, 6])
numpy.ravel对2D数组进行扁平化处理,但与matlab的(:)不同。
>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.ravel()
array([1, 2, 3, 4, 5, 6])
你就是这么想的吗?
编辑:正如Patrick指出的,必须小心将(:)转换为Python。
当然,如果你只想展平一个矩阵或二维零数组,这无关紧要。
所以这里有一种方法可以得到类似于matlab的行为
numpy.ravel
对2D数组进行扁平化处理,但与matlab的(:)
不同。在这里你必须小心,因为ravel不像Matlab用(:)那样分解元素。如果您使用:
在Matlab中:
在Matlab中,元素首先按列展开,然后按行展开。在Python中则相反。这与元素的存储顺序有关(在NumPy中默认为C顺序,在Matlab中为Fortran顺序)。
知道A(:)等同于reforme(A,[numel(A),1]),您可以在Python中使用以下命令获得相同的行为:
注意order=F,它表示Fortran顺序(列先展开)。
相关问题 更多 >
编程相关推荐