首頁  >  文章  >  後端開發  >  python中的np.random.permutation函數怎麼使用

python中的np.random.permutation函數怎麼使用

PHPz
PHPz轉載
2023-05-17 13:43:061891瀏覽

    一:函數介紹

    #np.random.permutation() 整體來說他是一個隨機排列函數,就是將輸入的資料進行隨機排列,官方文件指出,此函數只能針對一維資料隨機排列,對於多維資料只能對第一維度的資料進行隨機排列。

    簡而言之:np.random.permutation函數的作用就是按照給定列表產生一個打亂後的隨機列表

    在處理數據集時,通常可以使用該函數進行打亂資料集內部順序,並按照相同的順序進行標籤序列的打亂。

    二:實例

    2.1 直接處理數組或列表數

    import numpy as np
    
    data = np.array([1,2,3,4,5,6,7])
    a = np.random.permutation(data)
    b = np.random.permutation([5,0,9,0,1,1,1])
    print(a)
    print( "data:", data )
    print(b)

    python中的np.random.permutation函數怎麼使用

    2.2 間接處理:不改變原始資料(對數組下標的處理)

    label = np.array([1,2,3,4,5,6,7])
    a = np.random.permutation(np.arange(len(label)))
    print("Label[a] :" ,label[a] )

    python中的np.random.permutation函數怎麼使用

    補充:一般只能用於N維數組只能將整數標量數組轉換為標量索引

    why?label1[a1]  label1是列表,a1是列表下標的隨機排列但是!列表結構沒有標量索引label1[a1]報錯

    label1=[1,2,3,4,5,6,7]
    print(len(label1))
    
    a1 = np.random.permutation(np.arange(len(label1)))#有结果
    
    print(a1)
    
    print("Label1[a1] :" ,label1[a1] )#这列表结构没有标量索引 所以会报错

    python中的np.random.permutation函數怎麼使用

    2.3 實例:鳶尾花資料中對鳶尾花的隨機打亂(可以直接用)

    from sklearn import svm
    from sklearn import datasets #sklearn 的数据集
    iris = datasets.load_iris()
    iris_x = iris.data
    iris_y = iris.target
    indices = np.random.permutation(len(iris_x))
    
    #此时 打乱的是数组的下标的排序
    print(indices)
    print(indices[:-10])#到倒数第10个为止
    print(indices[-10:])#最后10个
    
    # print(type(iris_x))   <class &#39;numpy.ndarray&#39;>
    
    #9:1分类
    #iris_x_train = iris_x[indices[:-10]]#使用的数组打乱后的下标
    #iris_y_train = iris_y[indices[:-10]]
    #iris_x_test= iris_x[indices[-10:]]
    #iris_y_test= iris_y[indices[-10:]]

    陣列下標即標量索引的重新分佈情況: 下標是0開始

    python中的np.random.permutation函數怎麼使用

    #

    以上是python中的np.random.permutation函數怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除