擅长:python、mysql、java
<p>代码的问题是,当您尝试交换列时,在读取第一列之前,会用另一列覆盖其中一列。这是因为数组切片(如果可能)不复制数据,而是引用被切片数组的缓冲区</p>
<p>你可以</p>
<ul>
<li>像这样使用<code>.copy()</code>强制复制</li>
</ul>
<p>是的</p>
<pre><code>Evecs[:,i], Evecs[:,ncols-1-i] = Evecs[:,ncols-1-i], Evecs[:,i].copy()
</code></pre>
<p>或者</p>
<ul>
<li>避免循环,只需</li>
</ul>
<p>是的</p>
<pre><code>Evecs = Evecs[:, ::-1]
</code></pre>