如何有效地将块中的numpy数组洗牌

RKM*_*RKM 2 python numpy

我有一个numpy数组,如下所示[-1,0,1,0,1,2,1,2,3,...,n-1,n,n + 1,n,n + 1, n + 2 ..]我想将数组以3块的形式进行洗牌,是否有一种有效的方法可以在numpy中完成它?

我知道你可以使用下面的shuffle方法对一个numpy数组进行洗牌,但这给了我一个完全洗牌的数组.有没有办法在numpy中大块洗牌?

import numpy.random as rng

ind = numpy.arange(100)
rng = numpy.random.RandomState(123)
rng.shuffle(ind)
Run Code Online (Sandbox Code Playgroud)

hpa*_*ulj 6

重塑为3列. shuffledoc说它只是改变了第一个维度:

ind=np.arange(99)  # multple of 3
ind=ind.reshape(-1,3)
rng.shuffle(ind)
ind.flatten()
Run Code Online (Sandbox Code Playgroud)

  • 正确的。“展平”不是就地操作。我改编了交互式会话中的代码片段,在该会话中我自动打印了最后一行。 (2认同)