美文网首页
numpy 打乱次序结果不同和相同

numpy 打乱次序结果不同和相同

作者: 逍遥_yjz | 来源:发表于2021-11-05 16:55 被阅读0次

    1. 打乱次序结果不同

    np.random.permutation与np.random.shuffle有两处不同:

    • 如果传给permutation一个矩阵,它会返回一个洗牌后的矩阵副本;而shuffle只是对一个矩阵进行洗牌,无返回值。

    • 如果传入一个整数,它会返回一个洗牌后的arange。

    1.1 无返回值

    **np.random.shuffle **

    arr = np.arange(9).reshape((3, 3))
    print(arr)
    '''打乱次序'''
    np.random.shuffle(arr)
    print(arr)
    
    [[0 1 2]
     [3 4 5]
     [6 7 8]]
    
    [[6 7 8]
     [0 1 2]
     [3 4 5]]
    

    1.2 有返回值

    permutation()

    train_data = np.arange(21).reshape((7,3))
    train_label = np.array(['a1','a2','a3','a4','a5','a6','a7'])
    print(train_data)
    print(train_label)
    
    shuffle_ix = np.random.permutation(np.arange(len(train_data)))
    train_data = train_data[shuffle_ix]
    train_label = train_label[shuffle_ix]
    print(train_data)
    print(train_label)
    

    输出:

    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]
     [12 13 14]
     [15 16 17]
     [18 19 20]]
    ['a1' 'a2' 'a3' 'a4' 'a5' 'a6' 'a7']
    
    [[ 6  7  8]
     [18 19 20]
     [12 13 14]
     [ 0  1  2]
     [ 9 10 11]
     [ 3  4  5]
     [15 16 17]]
    ['a3' 'a7' 'a5' 'a1' 'a4' 'a2' 'a6']
    

    2. 打乱次序结果相同

    使用rng = np.random.default_rng(12345)语句重置种子,这样混洗之后结果相同

    当然rng = np.random.default_rng() ,混洗后结果不相同

    train_data = np.arange(21).reshape((7,3))
    train_label = np.array(['a1','a2','a3','a4','a5','a6','a7'])
    print(train_data)
    print(train_label)
    index_list = list(range(len(train_label)))
    rng = np.random.default_rng(12345)
    rng.shuffle(index_list)
    print(index_list)
    shuffle_ix = index_list
    
    #shuffle_ix = np.random.permutation(np.arange(len(train_data)))
    train_data = train_data[shuffle_ix]
    train_label = train_label[shuffle_ix]
    print(train_data)
    print(train_label)
    

    多次运行的结果发现一样的,输出:

    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]
     [12 13 14]
     [15 16 17]
     [18 19 20]]
    ['a1' 'a2' 'a3' 'a4' 'a5' 'a6' 'a7']
    
    [4, 3, 0, 2, 1, 6, 5]
    [[12 13 14]
     [ 9 10 11]
     [ 0  1  2]
     [ 6  7  8]
     [ 3  4  5]
     [18 19 20]
     [15 16 17]]
    ['a5' 'a4' 'a1' 'a3' 'a2' 'a7' 'a6']
    

    相关文章

      网友评论

          本文标题:numpy 打乱次序结果不同和相同

          本文链接:https://www.haomeiwen.com/subject/eqnypltx.html