擅长:python、mysql、java
<p>使用普通的<code>for</code>控制迭代更容易:</p>
<pre><code>In [17]: a
Out[17]:
array([[0, 1, 2],
[3, 4, 5]])
In [18]: for row in a:
...: print(row)
...:
[0 1 2]
[3 4 5]
</code></pre>
<p>用<code>nditer</code>做这件事实在是太尴尬了。除非您需要广播使用<code>cython</code>,如页面末尾所述,<code>nditer</code>不提供任何速度优势。即使使用<code>cython</code>,我使用<code>memoryviews</code>比使用<code>nditer</code>获得更好的速度。在</p>
<p>看<code>np.ndindex</code>。它创建了一个降维的虚拟数组,并对其进行了指示:</p>
^{pr2}$
<p>明白了:</p>
<pre><code>In [31]: for x in np.nditer(a.T.copy(), flags=['external_loop'], order='F'):
...: print(x)
[0 1 2]
[3 4 5]
</code></pre>
<p>就像我说的-很尴尬</p>
<p>我最近研究了一维结构化数组上的直接迭代和nditer之间的区别:<a href="https://stackoverflow.com/a/43005985/901925">https://stackoverflow.com/a/43005985/901925</a></p>