数组随机排序函数:
random.Generator.permutation(x, axis=0)
随机排列一个序列,或者返回一个排列过的范围。
- x: int or array_like
如果 x 为整数,则随机排列 np.arange(x)
。如果 x 是数组,则复制数组,并随机排列数组元素。
- axis: int, optional
随机排列的轴,默认为 0.
例1,生成指定范围内数值的随机排序:
rng = np.random.default_rng()
a1 = rng.permutation(10)
print(a1)
# [5 8 6 2 7 1 0 3 9 4]
例2,对数组随机排序:
a2 = rng.permutation([1, 4, 9, 12, 15])
print(a2)
# [ 1 15 4 9 12]
例 3,多维数组随机排序:
rng = np.random.default_rng()
arr = np.arange(9).reshape((3, 3))
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
a3 = rng.permutation(arr)
print(a3)
# [[6 7 8]
# [0 1 2]
# [3 4 5]]
解释: axis
默认为 0,所以这里只对第 1 维进行了随机排序。
例 4,多维数组指定随机排序轴:
rng = np.random.default_rng()
arr = np.arange(9).reshape((3, 3))
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
a3 = rng.permutation(arr, axis=1)
print(a3)
# [[1 2 0]
# [4 5 3]
# [7 8 6]]
解释:这里指定 axis=1
,所以对第二维进行随机排序,第1维保持不变。