如何在特定轴上随机洗牌numpy 3D阵列中的块

2024-03-28 23:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个3D numpy数组,我想在一个特定的轴上逐块洗牌,同时保持该块中的数据处于原始状态。例如,我有一个形状为(50,140,23)的np数组,我想通过在轴=1上制作(50,1,23)的块来洗牌。因此,将创建140个块,并且块应在轴=1上洗牌,同时保持块中数据的原始顺序。我阅读了关于np.random.shuffle(x)的文档,但这只会在第一个轴上移动,我们不能为它提供块大小。 numpy中是否有任何功能或快速实现此功能的方法


Tags: 数据方法文档功能numpy顺序状态np
2条回答

也许交换轴,洗牌和交换回来可能会为你做的把戏

a = np.random.random((50,140,23))
b = np.swapaxes(a, 0, 1)
np.random.shuffle(b)
c = np.swapaxes(b, 0, 1)

您可以使用随机排列:

A = sum(np.ogrid[0:0:50j,:140,0:0:23j])
rng = np.random.default_rng()
Ashuff = A[:,rng.permutation(140),:]

相关问题 更多 >