我有一个二维数组沿 0 轴重复 k 次。我想沿着第二个轴独立地对其进行洗牌。下面提供的代码可以工作,但我相信它可以做得更好。请帮忙。
c = rng.random(size=(n, m))[np.newaxis].repeat(k, axis=0)
for i in range(c.shape[0]):
c[i] = c[i, rng.choice(c.shape[1], c.shape[1], replace=False)]
我尝试了在 2d 数组上进行切片和排列切片的多种设置,但我无法在 3d 数组上对其进行成像。
小例子:
import numpy as np
rng = np.random.default_rng()
n = 4
m = 3
k = 2
c = rng.random(size=(k, n, m))[np.newaxis][0]
c
是:
array([[[0.41020744, 0.10595292, 0.77565636],
[0.81389261, 0.66003734, 0.01037299],
[0.93920543, 0.384785 , 0.05543084],
[0.30460909, 0.40248868, 0.39469976]],
[[0.97808845, 0.19421067, 0.56014205],
[0.31257343, 0.95297191, 0.14725328],
[0.47446104, 0.66471068, 0.00975436],
[0.04586853, 0.46771096, 0.5393846 ]]])
请注意,它的
shape
保留了之前的内容。