擅长:python、mysql、java
<p>一般来说,对于n>;1的所有nD数组,可以迭代数组的第一个维度,就像迭代任何其他iterable一样。要检查数组是否为iterable,可以使用<code>np.iterable(arr)</code>。下面是一个例子:</p>
<pre><code>In [9]: arr = np.arange(3 * 4 * 5).reshape(3, 4, 5)
In [10]: arr.shape
Out[10]: (3, 4, 5)
In [11]: np.iterable(arr)
Out[11]: True
In [12]: for a in arr:
...: print(a.shape)
...:
(4, 5)
(4, 5)
(4, 5)
</code></pre>
<p>因此,在每次迭代中,我们都会得到一个矩阵(形状为<code>(4, 5)</code>)作为输出。总共有3个这样的输出组成了形状<code>(3, 4, 5)</code>的3D数组</p>
<hr/>
<p>如果出于某种原因,您想在其他维度上迭代,那么可以使用<code>numpy.rollaxis</code>将所需的轴移动到第一个位置,然后按<a href="https://stackoverflow.com/questions/1589706/iterating-over-arbitrary-dimension-of-numpy-array">iterating-over-arbitrary-dimension-of-numpy-array</a>中所述对其进行迭代</p>
<hr/>
<p><strong>注意</strong>:已经说过,<code>numpy.rollaxis</code>只为向后兼容而维护。因此,建议使用<code>numpy.moveaxis</code>代替将所需的轴移动到第一个维度。在</p>