Python 如何在块中高效地洗牌numpy数组

Python 如何在块中高效地洗牌numpy数组,python,numpy,Python,Numpy,我有一个numpy数组,它看起来如下[-1,0,1,0,1,2,1,2,3,…,n-1,n,n+1,n,n+1,n,n+1,n+2..] 我想将数组分为3块进行洗牌,有没有一种有效的方法可以在numpy中进行洗牌 我知道你可以使用下面的洗牌方法洗牌一个numpy数组,但这给了我一个完全洗牌的数组。有没有办法在numpy中将它洗牌成块 import numpy.random as rng ind = numpy.arange(100) rng = numpy.random.RandomState

我有一个numpy数组,它看起来如下[-1,0,1,0,1,2,1,2,3,…,n-1,n,n+1,n,n+1,n,n+1,n+2..] 我想将数组分为3块进行洗牌,有没有一种有效的方法可以在numpy中进行洗牌

我知道你可以使用下面的洗牌方法洗牌一个numpy数组,但这给了我一个完全洗牌的数组。有没有办法在numpy中将它洗牌成块

import numpy.random as rng

ind = numpy.arange(100)
rng = numpy.random.RandomState(123)
rng.shuffle(ind)
重塑为3列。doc说它只是洗牌了第一个维度:

ind=np.arange(99)  # multple of 3
ind=ind.reshape(-1,3)
rng.shuffle(ind)
ind.flatten()

要在处理后保持阵列平坦,最后一个操作不应该是ind=ind.flant()?对<代码>展平不是就地操作。我改编了一个交互式会话中的代码片段,在该会话中,我自动打印了最后一行。