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))‌
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐