目錄
1. 函數簡介
numpy中的np.random.choice(arr,size=None,replace=True,p=None),通過給定的一維數組數據產生隨機採樣。
參數:
- arr: 一維數組或int型變量。若是數組就按照數組中的數據進行採樣,若是int型變量,相當於np.arange(a)。
- size:int型變量或者 tuple of ints 決定輸出的shape。如果給定的是(m,n,k),那麼m*n*k個採樣點將會被採樣。
- replace:採樣是否放回,即決定採樣中是否有重複值
- p:一維數組,對應arr數組中每個採樣點的概率分佈,即每個採樣點以多大的概率被採樣。沒有給出則使用標準分佈,每個採樣點等概率被採樣。
返回值:
samples:單一數值或ndarray
2. 使用例子
import numpy as np
#從0-4中等概率採樣3個數 可以重複
print(np.random.choice(5,3))
#從0-4中等概率採樣3個數 不可以重複
print(np.random.choice(5,3,replace=False))
#注意不放回採樣時 size不能比arr數組大
#print(np.random.choice(5,6,replace=False))
#從0-4中以指定概率採樣3個數
print(np.random.choice(5,3,p=[0.1,0.1,0.1,0.3,0.4]))
#從0-4中以指定概率採樣3個數 不重複
print(np.random.choice(5,3,p=[0.1,0.1,0.1,0.3,0.4],replace=False))
#也可以採樣得到一個多維數組 用size指定多維數組大小 默認可重複 等概率
print(np.random.choice(5,(2,2)))
print("---------------")
print(np.random.choice(10,(2,2,3)))
#size=1時 返回一個包含一個採樣點的一維數組
print(np.random.choice(5,1))
#size爲默認值時 返回一個數值
print(np.random.choice(5))
#size=0 返回一個空數組
print(np.random.choice(5,0))
#arr也可以是某個一維數組或列表
print(np.random.choice([0,100,44,1,55,11],3))
#一維數組或列表也可以是任意類型 不一定爲整型
print(np.random.choice(['alice','bob','dancy','baby'],2,replace=False,p=[0.3,0.3,0.2,0.2]))
#實際使用時 一般先創建一個mask 然後對數據進行採樣
length = len(data)
mask = np.random.choice(length,size)
data1 = data[mask]