numpy.random.uniform介紹

numpy.random.uniform介紹:

1. 函數原型:  numpy.random.uniform(low,high,size)

功能:從一個均勻分佈[low,high)中隨機採樣,注意定義域是左閉右開,即包含low,不包含high.

參數介紹:
    
    low: 採樣下界,float類型,默認值爲0;
    high: 採樣上界,float類型,默認值爲1;
    size: 輸出樣本數目,爲int或元組(tuple)類型,例如,size=(m,n,k), 則輸出m*n*k個樣本,缺省時輸出1個值。

返回值:ndarray類型,其形狀和參數size中描述一致。

這裏順便說下ndarray類型,表示一個N維數組對象,其有一個shape(表維度大小)和dtype(說明數組數據類型的對象),使用zeros和ones函數可以創建數據全0或全1的數組,原型:

    numpy.ones(shape,dtype=None,order='C'),
其中,shape表數組形狀(m*n),dtype表類型,order表是以C還是fortran形式存放數據。

2. 類似uniform,還有以下隨機數產生函數:

    a. randint: 原型:numpy.random.randint(low, high=None, size=None, dtype='l'),產生隨機整數;
    b. random_integers: 原型: numpy.random.random_integers(low, high=None, size=None),在閉區間上產生隨機整數;
    c. random_sample: 原型: numpy.random.random_sample(size=None),在[0.0,1.0)上隨機採樣;
    d. random: 原型: numpy.random.random(size=None),和random_sample一樣,是random_sample的別名;
    e. rand: 原型: numpy.random.rand(d0, d1, ..., dn),產生d0 - d1 - ... - dn形狀的在[0,1)上均勻分佈的float型數。
    f. randn: 原型:numpy.random.randn(d0,d1,...,dn),產生d0 - d1 - ... - dn形狀的標準正態分佈的float型數。

3. Examples:
        例一: “畫柱狀圖”

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

s = np.random.uniform(0,1,1200)      # 產生1200個[0,1)的數
count, bins, ignored = plt.hist(s, 12, normed=True)
 """
 hist原型:
         matplotlib.pyplot.hist(x, bins=10, range=None, normed=False, weights=None,
         cumulative=False, bottom=None, histtype='bar', align='mid', 
         orientation='vertical',rwidth=None, log=False, color=None, label=None, 
         stacked=False, hold=None,data=None,**kwargs)

 輸入參數很多,具體查看matplotlib.org,本例中用到3個參數,分別表示:s數據源,bins=12表示bin 
 的個數,即畫多少條條狀圖,normed表示是否歸一化,每條條狀圖y座標爲n/(len(x)`dbin),整個條狀圖積分值爲1

 輸出:count表示數組,長度爲bins,裏面保存的是每個條狀圖的縱座標值
      bins:數組,長度爲bins+1,裏面保存的是所有條狀圖的橫座標,即邊緣位置
      ignored: patches,即附加參數,列表或列表的列表,本例中沒有用到。
"""
plt.plot(bins, np.ones_like(bins), linewidth=2, color='r')
plt.show()

繪製結果如下圖:



例二: “畫正態分佈柱狀圖”

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as MLA

mu, sigma = 10, 10
x = mu + sigma*np.random.randn(5000)

# the histogram of the data
n, bins, patches = plt.hist(x, 20, normed=1, facecolor='blue', alpha=0.8)

# add a 'best fit' line
y = MLA.normpdf( bins, mu, sigma)
"""
normpdf函數原型:
        matplotlib.mlab.normpdf(x, *args)
功能:Return the normal pdf evaluated at x; args provides mu, sigma
"""
l = plt.plot(bins, y, 'g--', linewidth=3)

plt.xlabel('samples')
plt.ylabel('p')
plt.title(r'$Normal\ pdf\ m=10,\ \sigma=10$')
plt.axis([-30, 50, 0, 0.042])
plt.grid(True)
plt.show()

結果如下圖:


4. numpy.random.RandomState介紹:

   英文簡介:“Container for the Mersenne Twister pseudo-random number generator.” 翻譯過來爲:

              它是一個容器,用來存儲採用梅森旋轉產生僞隨機數的算法。

   輸入參數:seed,可選項{None, int, array_like},沒有給定的話,函數隨機選一個起始點,
             這樣深度學習的結果可能接近,但不完全相同,如果給定一個seed,則結果是deterministic,
             是確定的,但給定不給定seed對輸出隨機數並沒有影響,只是相當於給定了一個初始點,後面
             的數也是基於這個seed而產生。

Reference:

          1. http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html
 
          2. http://stackoverflow.com/questions/33209865/the-usage-of-randomstate-in-numpy
             -related-to-seed

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章