擅长:python、mysql、java
<p>在这里你必须小心,因为ravel不像Matlab用(:)那样分解元素。如果您使用:</p>
<pre><code>>>> a = np.array([[1,2,3], [4,5,6]])
>>> a.shape
(2,3)
>>> a.ravel()
array([1, 2, 3, 4, 5, 6])
</code></pre>
<p>在Matlab中:</p>
<pre><code>>> A = [1:3;4:6];
>> size(A)
ans =
2 3
>> A(:)
ans =
1
4
2
5
3
6
</code></pre>
<p>在Matlab中,元素首先按列展开,然后按行展开。在Python中则相反。这与元素的存储顺序有关(在NumPy中默认为C顺序,在Matlab中为Fortran顺序)。</p>
<p>知道A(:)等同于reforme(A,[numel(A),1]),您可以在Python中使用以下命令获得相同的行为:</p>
<pre><code>>>> a.reshape(a.size,order='F')
array([1, 4, 2, 5, 3, 6])
</code></pre>
<p>注意order=F,它表示Fortran顺序(列先展开)。</p>