1. 程式人生 > >Numpy中構造資料的random類

Numpy中構造資料的random類

在日常工作中,當遇到一個問題時,總是先簡化它,尋找某一種方法來解決它。如果不使用原資料集,就需要構造資料來驗證該方法。大家應該也知道numpy中random類有很多方法可以構造資料,但是當談論到具體某一種方法的詳細說明可能就會含糊不清了,今天就帶大家複習下這些方法。

先把這些方法一一列出,方便大家檢視

  • numpy.random.rand
  • numpy.random.randn
  • numpy.random.randint
  • numpy.random.random(與numpy.random.ranf功能一致)
  • numpy.random.choice
  • numpy.random.bytes
  • numpy.random.uniform
  • numpy.random.shuffle
  • numpy.random.RandomState

numpy.random.rand

numpy.random.rand(d0,d1,...,dn)(d0,d1為想要建立樣本的維度)

建立給定形狀的陣列,並使用來自均勻分佈的隨機樣本填充它。值得範圍是 [0, 1)。

例子如下:

import numpy as np

np.random.rand()
#0.5218338135626677

np.random.rand(2,3)
#array([[ 0.88534282,  0.94114095,  0.55626956],
#       [ 0.56497396,  0.33207925,  0.84650539]])

numpy.random.randn

numpy.random.randn(d0d1...dn)

從“標準正態”分佈中(均值0和方差1)返回一個樣本(或樣本)。

例子如下:

import numpy as np

np.random.randn()
#0.6431863026029006

np.random.randn(2,3)
#array([[-1.39990345, -0.45569575,  0.68015143],
#       [ 0.07683786,  0.00220794,  0.65128032]])

#如果想生成服從(3,6.25)的正態分佈
2.5 * np.random.randn(2, 3) + 3
#array([[ 2.45505539,  6.18266592,  2.99618938],
#       [ 2.32896161,  3.82456413,  4.58273751]])

numpy.random.randint

numpy.random.randint(low, high=None, size=None, dtype='l')

隨機生成需要的整數,一般是個範圍。

引數

含義
low 整數範圍的最小值,如果high為none,則為最大值,即[0,low)。
high 整數範圍的最大值,即[low,high)。
size 輸出樣本的形狀。
dtype 結果的型別,預設值為'np.int'。

例子如下:

import numpy as np

np.random.randint(3, size=10)
#array([1, 2, 0, 0, 1, 2, 0, 1, 2, 2])

#生成一個二維陣列,範圍在[0,4]
np.random.randint(5, size=(2, 4))
#array([[1, 0, 4, 4],
#       [2, 1, 4, 1]])

numpy.random.random

numpy.random.random(size=None)

在半開區間[0.0,1.0)中返回隨機浮點數。 

例子如下:

import numpy as np

np.random.random()
#0.969503002640394

np.random.random(size=10)
#array([ 0.10988239,  0.06355942,  0.62419081,  0.43922847,  0.01482134,
#        0.66467871,  0.11110031,  0.64051174,  0.47164644,  0.25348374])

np.random.random(size=(2,3))
#array([[ 0.54926089,  0.80708799,  0.78781729],
#       [ 0.55809703,  0.64387581,  0.17245042]])

np.random.choice

numpy.random.choice(a,size = None,replace = True,p = None )

引數

含義

a 陣列或者整數,如果是整數,則代表np.arange(a)
size 返回結果的形狀
replace 樣本是否可以重複出現
p 與a中的每個條目相關聯的概率。如果沒有給出,則樣本假定在a中的所有條目上均勻分佈。

例子如下

import numpy as np

np.random.choice(5)
#4

np.random.choice(5,3)
#array([2, 0, 1])

#換成字串也是可以得
np.random.choice(['a','b','c','d'],2)
#array(['c', 'a'], 
#       dtype='<U1')

numpy.random.bytes

numpy.random.bytes(length)

返回某一長度的隨機位元組。(內容簡單就不放例子了)

numpy.random.uniform

numpy.random.uniform(low=0.0, high=1.0, size=None)

從均勻分佈中抽取樣本,範圍為[low,high)。預設值為low=0,high=1。

例子如下:

import numpy as np

np.random.uniform()
#0.24846054309343435

np.random.uniform(1,5,size=10)
#array([ 2.7566854 ,  4.46158096,  3.70401546,  2.30317974,  4.4519283 ,
#        1.72569099,  1.55306411,  1.81166724,  3.86637241,  3.59304843])

np.random.uniform(1,5,size=(2,3))
#array([[ 3.74527792,  4.11014239,  1.74790511],
#       [ 3.72700012,  4.71200736,  1.57848601]])

numpy.random.shuffle

numpy.random.shuffle(x)

沿多維陣列的第一軸洗牌,子陣列的順序已更改,但其內容保持不變。

例子如下:

import numpy as np

a = [1,2,3,4,5,6,7,8,9]
np.random.shuffle(a)
a
#[8, 6, 7, 4, 1, 5, 2, 3, 9]

numpy.random.RandomState

numpy.random.RandomState(seed=None)

偽隨機數發生器的容器,做機器學習及模型訓練時常常要用到。'

如果sizeNone,則生成並返回單個值。如果size是整數,則返回填充了生成值的1-D陣列。如果size是一個元組,則填充並返回具有該形狀的陣列。

最後numpy的文件奉上Numpy.random