擅长:python、mysql、java
<p>这是因为numpy有1d数组的概念,而Matlab没有这个概念。再加上numpys<a href="http://www.scipy.org/EricsBroadcastingDoc" rel="noreferrer">broadcasting</a>,这提供了一个强大的简化(不必担心到处插入转置),但这意味着您必须考虑一下从Matlab进行翻译。在本例中,使用标量Numpy提取一个列可以将结果简化为1d数组,但是对于切片,它保留了原始维度。如果你想更接近Matlab的语义,你可以尝试使用Matrix类。有关详细信息,请参见<a href="http://www.scipy.org/NumPy_for_Matlab_Users" rel="noreferrer">NumPy for matlab users</a>页。在这种情况下,您可以执行以下任一操作:</p>
<pre><code>m[:,0][:,newaxis] # gives same as matlab
np.matrix(m)[:,0] # gives same as matlab
</code></pre>
<p>但请记住,如果您使用矩阵类<code>*</code>变成矩阵乘法,您需要使用<code>multiply()</code>来表示元素。(这在numpyformatlab用户页面中都有介绍)。一般来说,我建议你试着习惯使用1d数组,你可以在matlab中使用列或行向量,一般情况下一切都可以。在将列与行重新组合到二维数组中时,只需担心列与行的关系。在</p>
<p>您可能对自动化的matlab到python转换器感兴趣,比如<a href="http://ompc.juricap.com/" rel="noreferrer">OMPC</a><a href="http://www.frontiersin.org/neuroinformatics/paper/10.3389/neuro.11/005.2009/" rel="noreferrer">(paper)</a>(我认为还有其他的)。在</p>