擅长:python、mysql、java
<p>在将第二个轴作为第一个轴后,只需使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.shuffle.html" rel="nofollow noreferrer">^{<cd1>}</a>,因为<code>shuffle</code>函数沿着第一个轴工作,并在适当的位置执行洗牌-</p>
<pre><code>np.random.shuffle(x.swapaxes(0,1))
</code></pre>
<p>样本运行-</p>
<pre><code>In [203]: x
Out[203]:
array([[['1', '1', '1'],
['2', '2', '2'],
['3', '3', '3']],
[['a', 'a', 'a'],
['b', 'b', 'b'],
['c', 'c', 'c']]], dtype='<U21')
In [204]: np.random.shuffle(x.swapaxes(0,1))
In [205]: x
Out[205]:
array([[['3', '3', '3'],
['2', '2', '2'],
['1', '1', '1']],
[['c', 'c', 'c'],
['b', 'b', 'b'],
['a', 'a', 'a']]], dtype='<U21')
</code></pre>
<p>正如我们在<a href="https://stackoverflow.com/questions/35646908/numpy-shuffle-multidimensional-array-by-row-only-keep-column-order-unchanged">^{<cd3>}</a>中发现的那样,这应该是相当有效的。你知道吗</p>
<p>或者,其他两种排列轴的方法是-</p>
<pre><code>np.moveaxis(x,0,1)
x.transpose(1,0,2)
</code></pre>