np.random.permutation() 的用法总结
若输入数组/列表/元组,返回元素随机排列后的新数组。直接修改原数据,无返回值。返回新数组,原数据不变;
·
1. 基本功能
- 用于生成输入数据的随机排列副本,不修改原数据。输入可以是数组或整数:
- 若输入整数
n,返回np.arange(n)的随机排列。 - 若输入数组/列表/元组,返回元素随机排列后的新数组。
- 若输入整数
2. 多维数组处理
- 对多维数组(如矩阵),默认仅打乱第一个维度(如行顺序),其他维度保持不变。
arr = np.array([[1, 2], [3, 4], [5, 6]]) print(np.random.permutation(arr)) # 输出示例:[[3 4], [1 2], [5 6]]
3. 与 np.random.shuffle() 的区别
permutation()返回新数组,原数据不变;shuffle()直接修改原数据,无返回值。data = [1, 2, 3] a = np.random.permutation(data) # 原数据不变 np.random.shuffle(data) # 原数据被修改
4. 典型应用场景
- 数据与标签同步打乱:生成相同随机索引,保持数据与标签的对应关系。
m = 5 # 样本数 permutation = np.random.permutation(m) shuffled_X = X[permutation] shuffled_Y = Y[permutation]
5. 示例代码
- 输入整数:
print(np.random.permutation(5)) # 输出示例:[2 0 3 1 4] - 输入一维数组:
data = np.array([1, 2, 3]) print(np.random.permutation(data)) # 输出示例:[3 1 2]输入多维数组:
-
matrix = np.arange(9).reshape(3, 3) print(np.random.permutation(matrix)) # 输出示例:[[6 7 8], [0 1 2], [3 4 5]]
6. 注意事项
- 对非整数类型(如浮点数、字符串)的数组同样适用。
- 若需固定随机结果,需提前设置随机种子(如
np.random.seed(0))
更多推荐



所有评论(0)