首頁 > 軟體

python中np.random.permutation函數範例詳解

2023-04-02 06:01:28

一:函數介紹

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)

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] )

補:一般只能用於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] )#這列表結構沒有標量索引 所以會報錯

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 'numpy.ndarray'>

#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函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com