numpy產生隨機數匯總

2021-02-20 當交通遇上機器學習
import numpy as np
# 設置形狀時使用tuple(2, 3)或list[2, 3]都可以
# shape : int or sequence of ints

1. rand基本用法

numpy.random.rand(d0, d1, …, dn),產生[0,1)之間均勻分布的隨機浮點數,其中d0,d1....表示傳入的數組形狀。

np.random.rand(2)  #產生形狀為(2,)的數組,也就是相當於有2個元素的一維數組。

np.random.rand(2,4)    #產生一個形狀為(2, 4)的數組,數組中的每個元素是[0,1)之間均勻分布的隨機浮點數。

2. random基本用法

numpy.random.random(size),產生[0,1)之間的隨機浮點數,非均勻分布。numpy.random.random_sample、numpy.random.ranf、numpy.random.sample用法與該函數類似。

注意:該函數和rand()的區別:

random()參數只有一個參數「size」,有三種取值,None,int型整數,或者int型元組。而在之前的numpy.random.rand()中可以有多個參數。例如,如果要產生一個3*3的隨機數組(不考慮服從什麼分布),那麼在rand中的寫法是:numpy.random.rand(3,3),而在random中的寫法是numpy.random.random( (3,3) ),這裡面是個元組,是有小括弧的。

random()產生的隨機數的分布非均勻分布,numpy.random.rand()產生的隨機數的分布為均勻分布。

np.random.random((3,3))  ##產生一個[0,1)之間的形狀為(3, 3)的數組。

5 * np.random.random_sample((3, 3)) - 5  # 產生[-5,0)之間的形狀為(3, 3)隨機數組,即5*[0,1)-5。

(10-5) * np.random.random_sample((3, 3)) +5  # 產生[5,10)之間的形狀為(3, 3)隨機數組,即10*[0,1) -5[0,1)+5。

3. numpy.random.uniform

uniform(low=0.0, high=1.0, size=None),從指定範圍內產生均勻分布的隨機浮點數。

如果在seed()中傳入的數字相同,那麼接下來生成的隨機數序列都是相同的,僅作用於最接近的那句隨機數產生語句。

np.random.uniform()  # 默認產生一個[0,1)之間隨機浮點數。

np.random.uniform(1,5,size=(2 ,4))  # 默認產生一個[1,5)之間的形狀為(2, 4)隨機浮點數。

4. randn基本用法

numpy.random.randn(d0, d1, …, dn),產生服從標準正態分布(均值為0,方差為1)的隨機浮點數,使用方法和rand()類似。

np.random.rand(2)  #產生形狀為(2,)的數組。

np.random.rand(2,4)    #產生一個形狀為(2, 4)的數組。

如果要指定正太分布的均值和方差,則可使用下列公式,sigma * np.random.randn(...) + mu:

2.5 * np.random.randn(2,4)+3  #2.5是標準差(注意2.5不是方差),3是期望。

5. randint基本用法(早期版本random_integers)

numpy.random.randint(low[, high, size, dtype]),產生[low, high)之間的隨機整數,如果high不指明,則產生[0, low)之間的隨機整數,size可以是int整數,或者int型的元組,表示產生隨機數的個數,或者隨機數組的形狀。dtype表示具體隨機數的類型,默認是int,可以指定成int64。

早期版本中該函數的形式為numpy.random.random_integers()

np.random.randint(10)  #產生一個[0,10)之間的隨機整數。

np.random.randint(10,size=8)  #產生[0,10)之間的隨機整數8個,以數組的形式返回。

np.random.randint(5,10,size=(2,4))  #產生[5,10)之間的形狀為(2, 4)的隨機整數8個,以數組的形式返回。

6. choice基本用法

numpy.random.choice(a, size=None, replace=True, p=None),從一維array  a中按概率p選擇size個數據,若a為int,則從np.arrange(a)中選擇,若a為array,則直接從a中選擇。

np.random.choice(5, 3)   # 從np.arrange(5)中等概率選擇3個,等價於np.random.randint(0, 5, 3)

np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])  # 從np.arrange(5)中按概率p選擇3個,

np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])

np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])

aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']

np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])

7. numpy.random.shuffle

numpy.random.shuffle(x),按x的第一個維度進行打亂, x只能是array

np.random.shuffle( np.arange(9).reshape((3, 3)) )  # 對np.arange(9).reshape((3, 3))打亂。

8. numpy.random.permutation

numpy.random.permutation(x),按x的第一個維度進行打亂,若a為int,則對np.arrange(a)打亂,若a為array,則直接對a進行打亂。

np.random.permutation(10)  # 對np.arrange(10)打亂。

np.random.permutation( np.arange(9).reshape((3, 3)) )  # 對np.arange(9).reshape((3, 3))打亂。

9. numpy.random.seed

如果在seed()中傳入的數字相同,那麼接下來生成的隨機數序列都是相同的,僅作用於最接近的那句隨機數產生語句。

np.random.seed(10)

temp1=np.random.rand(4)  # array([0.77132064, 0.02075195, 0.63364823, 0.74880388])

np.random.seed(10)

temp2=np.random.rand(4)  # array([0.77132064, 0.02075195, 0.63364823, 0.74880388])

temp3=np.random.rand(4)  # array([0.49850701, 0.22479665, 0.19806286, 0.76053071])

上述temp1和temp2是相同的,temp3是不同的,因為seed僅作用於最接近的那句隨機數產生語句。

10. numpy.linspace

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)區間均等分。

np.linspace(2.0, 3.0, num=5)  # array([2.  , 2.25, 2.5 , 2.75, 3.  ])

np.linspace(2.0, 3.0, num=5, endpoint=False)  # array([2. ,  2.2,  2.4,  2.6,  2.8])

np.linspace(2.0, 3.0, num=5, retstep=True)  # (array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

11. zeros()、ones()、empty()、eye()、identity()

zeros()、ones()、empty()三者用法一樣,np.zeros(3, dtype=int)   np.zeros((2, 3))

使用empty()時需要對生成的每一個數進行重新負值,否則即為隨機數,所以慎重使用。

np.eye(2, 3, k=1)和np.identity(3): np.identity只能創建方形矩陣,np.eye可以創建矩形矩陣,且k值可以調節,為1的對角線的位置偏離度,0居中,1向上偏離1,2偏離2,以此類推,-1向下偏離。值的絕對值過大就偏離出去了,整個矩陣就全是0了。

相關焦點

  • 詳解Python隨機數的生成
    ,比如密碼加鹽時會在原密碼上關聯一串隨機數,蒙特卡洛算法會通過隨機數採樣等等。num = [1, 2, 3, 4, 5]print("sample: ",random.sample(num, 3))Python 的random模塊產生的隨機數其實是偽隨機數,依賴於特殊算法和指定不確定因素(種子seed)來實現。
  • 為什麼你用不好Numpy的random函數?
    在python數據分析的學習和應用過程中,經常需要用到numpy的隨機函數,由於隨機函數random的功能比較多,經常會混淆或記不住
  • Python基礎知識:以實例教你學隨機數產生和字符/ASCII碼轉換操作
    基本實現方法1使用python內置的random模塊產生隨機數,我們知道字符「a」和「z」對應的ASCII碼分別為97和122,所以對於題目要求產生「a」-「z」之間的隨機字符序列,只需使用random模塊產生97-122之間的隨機數,然後將其轉換為對應的字符即可。其中,字符轉數字的函數為ord函數,數字轉字符的函數為chr函數。
  • Numpy學習打卡task02
    隨機數生成器可以是真正的硬體隨機數生成器(HRNGS),它生成的隨機數是某種物理環境屬性的當前值的函數,這種物理環境屬性是以實際上不可能建模的方式不斷變化的;也可以是偽隨機數生成器(PRNGS),它生成的數看起來是隨機的,但實際上是確定的,如果PRNG的狀態是已知的,就可以重現。本文中的numpy.random就是偽隨機數生成器。
  • Numpy入門詳細教程
    Random是numpy下的一個子包,內置了大量的隨機數方法接口,包括絕大部分概率分布接口,常用的主要還是均勻分布和正態分布:均勻分布:random、rand、uniform,三者功能具有相似性,其中前兩者均產生指定個數的0-1之間均勻分布,而uniform可通過設置參數實現任意區間的均勻分布;當需要產生整數均勻分布時,可用randint
  • 「每日一練」巧用python生成隨機數
    隨機數在我們的生產和生活中有很多的應用場景,比如說登錄驗證的隨機數字等等,那麼你知道在Python中怎麼生成隨機數嗎?往下看,就是這麼簡單!題目python中生成隨機整數、隨機小數、0--1之間小數方法代碼先上代碼~運行效果題目詳述程序分析:隨機整數:random.randint(a,b),生成區間內的整數隨機小數:習慣用numpy庫,利用np.random.randn(5)生成5個隨機小數0-1隨機小數
  • NumPy ndarray數組的創建
    表1:np.random 模塊常用函數函數描述np.random.random生成0到1之間的隨機數np.random.uniform生成均勻分布的隨機數np.random.randn生成標準正態的隨機數np.random.randint生成隨機的整數np.random.normal生成正態分布np.random.shuffle隨機打亂順序np.random.seed設置隨機數種子
  • Numpy應用整理
    np.random.rand(m,n)生成m行v列[0,1)之間均勻分布的隨機數>>> np.random.rand(2,3)array([[0.30555863, 0.41887171, 0.12944243],       [0.047311  , 0.5610462 , 0.05545177
  • python數據科學系列:numpy入門詳細教程
    Random是numpy下的一個子包,內置了大量的隨機數方法接口,包括絕大部分概率分布接口,常用的主要還是均勻分布和正態分布:均勻分布:random、rand、uniform,三者功能具有相似性,其中前兩者均產生指定個數的0-1之間均勻分布,而uniform可通過設置參數實現任意區間的均勻分布;當需要產生整數均勻分布時,可用randint
  • 偽隨機數發生器:你不知道,其實計算機並不能產生隨機數
    在生活中,我們需要用到隨機數的地方很多,例子也很好舉,比如我們買彩票的號碼就是一個隨機數。但是當計算機中需要產生隨機數的時候,絕大多數情況下並不是真的隨機數,我們把它稱為偽隨機數。這些偽隨機數是在一定的數值範圍內,採用一定的算法挑選出了一個數字,作為隨機產生的結果顯示出來,我們只能夠儘量讓這個算法公平一些,讓挑選到範圍內每一個數字的概率儘量做到一樣大,這樣產生的結果會更接近隨機數。
  • 清晰易懂的Numpy入門教程
    如何通過numpy生成序列數(sequences),重複數(repetitions)和隨機數(random)7. 小結1. 如何構建numpy數組構建numpy數組的方法很多,比較常用的方法是用np.array函數對列表進行轉化。
  • 零基礎學Python—你應該知道的Numpy小技巧
    如果我們在運算的時候產生了無窮大的數,那麼會被標記為numpy.inf。其運行結果為:[[nan 1. 2.][ 3. inf 5.][ 6. 7. 8.]]而在實際使用的過程中,我們可以用如下的代碼來判斷並修改這些特殊的值為我們可以運算的值。其運行結果為:[[-1. 1. 2.]
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。
  • 應用matlab實現幾種常見概率分布隨機數的產生
    隨機數:是專門的隨機試驗的結果。在統計學的不同技術中需要使用隨機數,比如在從統計總體中抽取有代表性的樣本的時候,或者在將實驗動物分配到不同的試驗組的過程中,或者在進行蒙特卡羅模擬法計算的時候等等。1.二項分布隨機數的產生程序如下:clear all;clcr=binornd(10,0.5) %在二項分布中n=10,p=0.5R=binornd(10,0.5,3,4) %產生一個3*4的矩陣運行結果:R =7 5 6 84
  • Numpy學習打卡task03
    數學概率論產生於對偶然性遊戲的研究,中世紀的Juan Caramuel等哲學家對概率的概念進行了研究,1805年Adrien-Marie Legendre首先描述了最小二乘法。現代統計學領域出現在19世紀末20世紀初,分為三個階段。
  • 為什麼要學Numpy,一文總結知識點
    >Numpy的介紹Numpy是什麼Python的一個開源的數值計算擴展庫,用來存儲和處理多維矩陣Numpy的用途高性能的實現二維或多維數組的處理和計算作為pandas、scikit-learn、tensorflow等基礎依賴庫Numpy的基礎結構一維數組、二維數組Numpy的核心數據結構數組的屬性數組的維度:shape元組數組的維度數目:ndim數組全部元素的個數:
  • Python NumPy用法介紹
    \np.tan(arr)\np.tanh(arr)計算數組arr各元素的普通型和雙曲型三角函數np.exp(arr) 計算數組arr各元素的指數值np.sign(arr) 計算數組arr各元素的符號值,1(+), 0, ‐1(‐)利用ndarray進行數據處理排序ndarray數組通過.sort()函數排序,多維數組時傳入軸編號NumPy的隨機數函數
  • 數據分析-numpy庫快速了解
    1.numpy是什麼庫NumPy是一個開源的Python科學計算基礎庫,包含: 一個強大的N維數組對象 ndarray 廣播功能函數 整合C/C++/Fortran代碼的工具 線性代數、傅立葉變換、隨機數生成等功能
  • 入門|數據科學初學者必知的NumPy基礎知識
    ,顯示結果:my_numpy_list = np.array(my_list)my_numpy_list #This line show the result of the array generated剛才我們將一個 Python 列錶轉換成一維數組。
  • Python數據分析之numpy數組全解析
    (5)np.random.random()創建一個元素為0到1之間隨機數的數組,接收一個list或者tuple作為參數:>>> np.random.random((3, 3))array([[0.19414645, 0.2306415 , 0.08072019],[0.68814308, 0.48019088