Numpy隨機抽樣
Numpy 的隨機抽樣功能非常強大,主要由 random 模組完成。
首先,我們需要了解如何使用 numpy 也就是生成一些滿足基本需求的隨機資料。主要由以下一些方法完成:
rand
random.rand(d0, d1, ..., dn)
方法的作用為:指定一個數組,並使用 [0, 1) 區間隨機資料填充,這些資料均勻分佈。
In [35]: import numpy as np
In [36]: np.random.rand(2,5)
Out[36]:
array([[ 0.95477626, 0.86310048, 0.52210115, 0.31657882, 0.51388808],
[ 0.96081154, 0.92429155, 0.91556681, 0.58216029, 0.79541621]])
In [37]: np.random.rand(2,5)
Out[37]:
array([[ 0.21338028, 0.64965883, 0.66134919, 0.59493323, 0.7210417 ],
[ 0.03028672, 0.57322996, 0.55750938, 0.21010241, 0.70697314]])
randn
random.randn(d0, d1, ..., dn)
與 random.rand(d0, d1, ..., dn)
的區別在於,返回的隨機資料符合標準正太分佈。
In [38]: import numpy as np
In [39]: np.random.randn(1,10)
Out[39]:
array([[ 1.73156151, -1.84007543, 0.14878382, 0.51311413, -1.90056873,
-0.63300809, -0.90696569, -0.3109273 , 0.20482113, -0.65825151]])
In [40]: np.random.randn(1,10)
Out[40]:
array([[-0.45217741, 1.57705333, 0.179237 , 2.51487338, -0.81338415 ,
0.86565983, -1.26091685, 0.67729083, -0.01673803, -0.88410194]])
randint
randint(low, high, size, dtype)
方法將會生成 [low, high) 的隨機整數。注意這是一個半開半閉區間。
In [41]: import numpy as np
In [42]: np.random.randint(2, 5, 10)
Out[42]: array([2, 3, 2, 2, 4, 3, 2, 4, 3, 3])
In [43]: np.random.randint(2, 5, (6,))
Out[43]: array([4, 4, 2, 2, 4, 2])
In [44]: np.random.randint(2, 5, (6,6))
Out[44]:
array([[4, 3, 4, 2, 3, 2],
[3, 2, 4, 3, 2, 2],
[3, 2, 3, 3, 2, 2],
[2, 3, 4, 2, 4, 3],
[4, 2, 2, 3, 2, 3],
[2, 4, 4, 3, 3, 3]])
random_integers
random_integers(low, high, size)
方法將會生成 [low, high] 的 np.int 型別隨機整數。注意這是一個閉區間。
In [45]: import numpy as np
In [46]: np.random.random_integers(2, 5, 10)
DeprecationWarning: This function is deprecated. Please call randint(2, 5 + 1) instead
if __name__ == '__main__':
Out[46]: array([3, 3, 2, 5, 4, 2, 5, 3, 5, 2])
random_sample
random_sample(size)
方法將會在 [0, 1) 區間內生成指定 size 的隨機浮點數。
In [47]: import numpy as np
In [48]: np.random.random_sample((6,6))
Out[48]:
array([[ 0.42009732, 0.05595987, 0.65022868, 0.18997229, 0.69814036,
0.61523511],
[ 0.2985339 , 0.50901118, 0.06090717, 0.76180005, 0.86715278,
0.09642734],
[ 0.66932351, 0.05251065, 0.02306205, 0.97841557, 0.38419852,
0.30673377],
[ 0.81771047, 0.67702204, 0.21086147, 0.64027755, 0.42783604,
0.90985532],
[ 0.47946547, 0.1488386 , 0.31938335, 0.06678984, 0.25343433,
0.01580869],
[ 0.46362814, 0.89429929, 0.86515244, 0.26026441, 0.28736345,
0.91810846]])
與 random.random_sample
類似的方法還有:
random.random([size])
random.ranf([size])
random.sample([size])
它們 4 個的效果都差不多。
choice
choice(a, size, replace, p)
方法將會給定的 1 維數組裡生成隨機數。
In [49]: import numpy as np
In [50]: np.random.choice(10, 5)
Out[50]: array([1, 1, 2, 8, 1])
上面的程式碼將會在 np.arange(10) 中生成 5 個隨機數。
概率密度分佈
除了上面介紹的 6 中隨機數生成方法,numpy 還提供了大量的滿足特定概率密度分佈的樣本生成方法。它們的使用方法和上面非常相似,這裡就不再一一介紹了。列舉如下:
random.beta(a,b,size)
:從 Beta 分佈中生成隨機數。random.binomial(n, p, size)
:從二項分佈中生成隨機數。random.chisquare(df,size)
:從卡方分佈中生成隨機數。random.dirichlet(alpha,size)
:從 Dirichlet 分佈中生成隨機數。random.exponential(scale,size)
:從指數分佈中生成隨機數。random.f(dfnum,dfden,size)
:從 F 分佈中生成隨機數。random.gamma(shape,scale,size)
:從 Gamma 分佈中生成隨機數。random.geometric(p,size)
:從幾何分佈中生成隨機數。random.gumbel(loc,scale,size)
:從 Gumbel 分佈中生成隨機數。random.hypergeometric(ngood, nbad, nsample, size)
:從超幾何分佈中生成隨機數。random.laplace(loc,scale,size)
:從拉普拉斯雙指數分佈中生成隨機數。random.logistic(loc,scale,size)
:從邏輯分佈中生成隨機數。random.lognormal(mean,sigma,size)
:從對數正態分佈中生成隨機數。random.logseries(p,size)
:從對數系列分佈中生成隨機數。random.multinomial(n,pvals,size)
:從多項分佈中生成隨機數。random.multivariate_normal(mean, cov, size)
:從多變數正態分佈繪製隨機樣本。random.negative_binomial(n, p, size)
:從負二項分佈中生成隨機數。random.noncentral_chisquare(df,nonc,size)
:從非中心卡方分佈中生成隨機數。random.noncentral_f(dfnum, dfden, nonc, size)
:從非中心 F 分佈中抽取樣本。random.normal(loc,scale,size)
:從正態分佈繪製隨機樣本。random.pareto(a,size)
:從具有指定形狀的 Pareto II 或 Lomax 分佈中生成隨機數。random.poisson(lam,size)
:從泊松分佈中生成隨機數。random.power(a,size)
:從具有正指數 a-1 的功率分佈中在 0,1 中生成隨機數。random.rayleigh(scale,size)
:從瑞利分佈中生成隨機數。random.standard_cauchy(size)
:從標準 Cauchy 分佈中生成隨機數。random.standard_exponential(size)
:從標準指數分佈中生成隨機數。random.standard_gamma(shape,size)
:從標準 Gamma 分佈中生成隨機數。random.standard_normal(size)
:從標準正態分佈中生成隨機數。random.standard_t(df,size)
:從具有 df 自由度的標準學生 t 分佈中生成隨機數。random.triangular(left,mode,right,size)
:從三角分佈中生成隨機數。random.uniform(low,high,size)
:從均勻分佈中生成隨機數。random.vonmises(mu,kappa,size)
:從 von Mises 分佈中生成隨機數。random.wald(mean,scale,size)
:從 Wald 或反高斯分佈中生成隨機數。random.weibull(a,size)
:從威布林分佈中生成隨機數。random.zipf(a,size)
:從 Zipf 分佈中生成隨機數。
相關推薦
Numpy隨機抽樣
Numpy 的隨機抽樣功能非常強大,主要由 random 模組完成。 首先,我們需要了解如何使用 numpy 也就是生成一些滿足基本需求的隨機資料。主要由以下一些方法完成: rand random.rand(d0, d1, ..., dn) 方法的作用為:指定一
隨機抽樣 (numpy.random)
via hyper pseudo ocs wal gauss array diagonal title 隨機抽樣 (numpy.random) 簡單的隨機數據 rand(d0, d1, ..., dn) 隨機值 >>> np.random
R語言:隨機抽樣(sample函數)
.cn png 函數 -1 數據集 img image 如果 一個數 如果想從一堆數據集中隨機抽出一個數,用sample函數就能實現,代碼展示如下: forehead<-c(249,189,128,111,184,233,313,120,151,196,135,
隨機抽樣一致 RANSAC
轉自:https://www.cnblogs.com/cfantaisie/archive/2011/06/09/2076864.html Ransac是用途很廣泛的演算法,詳細介紹請看http://en.wikipedia.org/wiki/RANSAC。下面簡單介紹一下(沒興趣的可以略過不看
opencv3 SIFT特徵提取方法和RANSAC(隨機抽樣一致性方法)進行剔除無匹配點
最近整理一下利用SIFT特徵提取方法和RANSAC(隨機抽樣一致性方法)進行剔除無匹配點的內容 //讀取影象 Mat img01=imread("3.png"); Mat img02=imread("4.png"); imshow("orig
python--DataFrame隨機抽樣
平時工作中,經常遇到隨機抽樣的需求,可用Pandas庫中的sample函式,簡單又快捷。 官方文件解釋在這:sample DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_sta
python3 成為錦鯉的第一步!瞭解隨機抽樣之蓄水池演算法
python3 錦鯉第一步!瞭解隨機抽樣之蓄水池演算法 蓄水池演算法 問題背景: 樣本空間為N,從N個樣本中隨機不重複地抽取K個樣本,其中N是未知且非常巨大的數,如何保證每個樣本是等概率被抽取才是關鍵。 演算法邏輯: (1)先選取前k個數據(0,1,
Hive實現從表中隨機抽樣得到一個不重複的資料樣本
方法一: select * from table_a order by rand() limit 100; 方法二: select * from ( select e.*, cast(
oracle SQL sample 隨機抽樣查詢
建立測試表 SQL> create table t1 (x int); Table created. 插入10000行資料 SQL> begin 2 for i in 1..10000 loop 3 insert into t1 values (i
SQL 隨機抽樣的總結
對於SQL 隨機抽樣我們常想到的就是newid(),但如果對於一個在百萬、千萬甚至更大海量資料表中抽樣的話,簡單的newid(),其效能,效率就不是很理想了。所以在這裡有必要討論一下,擇優而用。 long_goods是一個百萬資料的表,Ctrl+L執行以下語句: --id
隨機抽樣一致性演算法(RANSAC)
本文翻譯自維基百科,英文原文地址是:http://en.wikipedia.org/wiki/ransac,如果您英語不錯,建議您直接檢視原文。 RANSAC是“RANdom SAmple Consensus(隨機抽樣一致)”的縮寫。它可以從一組包含“局外點”的觀
最小二乘法和隨機抽樣一致性
1. 原理 最小二乘法(leastSquares)的原理1 leastSquares通過最小化測量資料與模型資料的平方和, 求出模型引數。 e=sum(Yi−f(Xi)) 其中e是k與t的二次函式, 求其最小, 即求其極值; 求偏導dk=0,dt=0。
隨機抽樣一致性(RANSAC)演算法詳解
隨機抽樣一致性(RANSAC)演算法能夠有效的剔除特徵匹配中的錯誤匹配點。 實際上,RANSAC能夠有效擬合存在噪聲模型下的擬合函式。實際上,RANSAC演算法的核心在於將點劃分為“內點”和“外點”。在一組包含“外點”的資料集中,採用不斷迭代的方法,尋找最優引數模型,不符合最優模型的點,被定義為“外點”。這就
LeetCode382. 連結串列隨機節點————蓄水池抽樣演算法
//蓄水池抽樣 class Solution { private: ListNode * HEAD; public: //初始化 Solution(ListNode* head) { srand((unsigned)time(nullptr)); HEAD = hea
Numpy攻略:模擬在隨機時間點
具體步驟: 1.生成隨機索引:用randint函式生成隨機整數 2.模擬交易過程:用Numpy的take函式,從收盤價陣列中選取若干函式。 3.繪製利潤直方圖 完整程式碼如下: import numpy import fix_yahoo_finance as yf yf.pdr_over
python numpy array random 隨機排列(打亂訓練資料)
對numpy.array重新排列: numpy.random.shuffle(x):修改本身,打亂順序 import numpy as np arr = np.array(range(0, 21,
演算法(二)蓄水池抽樣演算法快速隨機抽取reads
原創:hxj7 關鍵詞:蓄水池演算法; fastq檔案往往都很大,出於測試目的,我們經常要從fastq檔案中隨機抽取reads,生成一個小一點的fastq檔案,以加快測試效率。假設我們要從一個包含大約100M reads的fastq檔案中隨機抽取1M reads
numpy基礎屬性方法隨機整理(七)--- np.take() / np.where / np.argmax()/np.argmin()(對照pandas相應功能的屬性和方法對比學習)
Note1: np.take(close_prices, np.where(weekdays==weekday)) pandas中參考 《pandas基礎屬性方法隨機整理(四)—例項梳理(多知識點)》有三種方法實現該條件查詢功能: 方法1:輔助列 dat
理論分佈和抽樣分佈------(一)事件、概率和隨機變數(離散、連續)
抽樣分佈:從間斷性變數總體的理論分佈(二項分佈和泊松分佈)和連續性變數總體的理論分佈中抽出的樣本統計數的分佈,即抽樣分佈。 一、事件和事件發生的概率 事件:在自然界中一種事物,常存在幾種可能出現的情況,每一種可能出現的情況稱為事件 事件的概率:每一件事出現的可能性,稱為
Numpy:排序及返回索引、多重複制、兩個矩陣對應元素取最小值、隨機選擇元素
1.排序: sort() # 方法一: import numpy as np a = np.array([[4,3,5,],[1,2,1]]) print (a) b = np.sort(a, ax