numpy.random.Generator.permuted#

方法

random.Generator.permuted(x, axis=None, out=None)#

沿着 axis 轴随机置换 x

shuffle 不同,给定轴上的每个切片都是独立于其他切片进行洗牌的。

参数:
xarray_like,至少一维

要洗牌的数组。

axisint, 可选

沿此轴的 x 切片将被洗牌。每个切片都是独立于其他切片进行洗牌的。如果 axis 为 None,则展平的数组将被洗牌。

outndarray, 可选

如果给出,这是洗牌后数组的目标。如果 out 为 None,则返回数组的洗牌副本。

返回:
ndarray

如果 out 为 None,则返回 x 的洗牌副本。否则,洗牌后的数组将存储在 out 中,并返回 out

另请参阅

shuffle
permutation

注意

方法 shufflepermuted 之间的一个重要区别在于它们如何处理 axis 参数,具体请参阅 处理 axis 参数

示例

创建一个 numpy.random.Generator 实例

>>> rng = np.random.default_rng()

创建一个测试数组

>>> x = np.arange(24).reshape(3, 8)
>>> x
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23]])

洗牌 x 的行

>>> y = rng.permuted(x, axis=1)
>>> y
array([[ 4,  3,  6,  7,  1,  2,  5,  0],  # random
       [15, 10, 14,  9, 12, 11,  8, 13],
       [17, 16, 20, 21, 18, 22, 23, 19]])

x 未被修改

>>> x
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23]])

要原地洗牌 x 的行,请将 x 作为 out 参数传递

>>> y = rng.permuted(x, axis=1, out=x)
>>> x
array([[ 3,  0,  4,  7,  1,  6,  2,  5],  # random
       [ 8, 14, 13,  9, 12, 11, 15, 10],
       [17, 18, 16, 22, 19, 23, 20, 21]])

请注意,当给定 out 参数时,返回值为 out

>>> y is x
True