<p>基本思想是它绕nd阵列的轴移动。
它接受<code>axis</code>参数所提到的轴,并将其置于<code>start</code>参数所提到的<em>位置</em>中;当这种情况发生时,在以下位置的剩余轴将向右移动,直到结束。如果忽略<code>start</code>参数,则会将所述轴移动到第一个位置(即,将作为第0个轴移动)</p>
<p>让我们用一个例子来理解它:</p>
<pre><code>In [21]: arr = np.ones((3,4,5,6))
In [22]: arr.shape
Out[22]: (3, 4, 5, 6)
# here 0th axis is 3, 1st axis is 4, 2nd axis is 5, 3rd axis is 6
# moving `3`rd axis as `1`st axis
In [27]: np.rollaxis(arr, 3, 1).shape
# see how `6` which was the third axis has been moved to location `1`
Out[27]: (3, 6, 4, 5)
</code></pre>
<p>当移动轴(或者NumPy称之为滚动轴)时,该位置上已经存在的轴为传入轴腾出空间,随后的轴作为块朝右侧移动。</p>
<p>如果忽略<code>start</code>参数,则<code>axis</code>参数中的轴将移到前面(即移到第0个位置)。</p>
<pre><code>In [29]: a.shape
Out[29]: (3, 4, 5, 6)
# ignoring the `start` moves the axis to the very front position.
In [30]: np.rollaxis(arr, 3).shape
Out[30]: (6, 3, 4, 5)
</code></pre>
<hr/>
<p>与<strong><code>np.moveaxis</code></strong>比较</p>
<pre><code>In [38]: arr.shape
Out[38]: (3, 4, 5, 6)
In [39]: np.rollaxis(arr, 0, -1).shape
Out[39]: (4, 5, 3, 6)
In [40]: np.moveaxis(arr, 0, -1).shape
Out[40]: (4, 5, 6, 3)
</code></pre>
<p>在上面的示例中,观察<code>np.moveaxis</code>如何进行循环移位,而<code>np.rollaxis</code>仅<em>向右侧扩展</em>。</p>
<hr/>
<p>注意,这个<em>rollaxis</em>操作返回从<em>NumPy 1.10.0</em>开始的输入数组的视图</p>