用Python的Numpy庫的Random模塊生成高效、隨機、分佈式的數據

一、Numpy庫介紹

NumPy是Python語言的一個擴充程序庫,利用它可以更加方便地進行科學計算。它是收集了各種各樣的數學和科學運算模式的一個大雜燴。不僅如此,NumPy還為數組運算提供了大量的支持,這些函數可以讓你輕鬆處理數學運算和數組運算,使得眾多科學計算的問題變得異常簡單。

而在NumPy庫中,Random模塊是用於生成隨機數據的模塊,在數據模擬、隨機算法等方面起到了很大的作用。

二、隨機數生成

在Python中,我們可以用random模塊來生成隨機數。不過,Numpy中的Random模塊則可以更高效地生成隨機數。在NumPy中,我們可以使用rand()、randn()和randint()函數來生成隨機數。

1. rand()函數

rand()函數生成一個\[0,1\]區間的隨機數,並且這些隨機數是均勻分佈的

import numpy as np
a = np.random.rand(3,3)
print(a)

輸出:

array([[ 0.34323275,  0.07146803,  0.85739212],
       [ 0.1031421 ,  0.18833668,  0.51419756],
       [ 0.55054841,  0.71160147,  0.93443114]])

2. randn()函數

randn()函數可以生成標準正態分佈(μ=0,σ=1)的隨機數。它們是不同的,因為後者按照正態分佈生成隨機數,而前者按照均勻分佈生成隨機數。

b = np.random.randn(3,3)
print(b)

輸出:

array([[ 0.2490965 ,  1.01225325,  0.29993122],
       [ 0.39395521,  0.44237272,  1.46365166],
       [ 1.18778469,  0.2700795 ,  0.47529234]])

3. randint()函數

randint()函數可以生成一個給定的半開區間內\[low, high)的整數,包括low,但是不包括high。

low, high = 1, 100
c = np.random.randint(low, high, size=(3,3))
print(c)

輸出:

array([[58, 18, 38],
       [56, 22, 56],
       [96, 93, 55]])

三、隨機生成分佈的數據

1. 生成正態分佈數據

除了生成標準正態分佈隨機數之外,我們還可以使用normal(loc, scale, size)函數生成正態(高斯)分佈的隨機數。

  • loc:正態分佈的均值
  • scale:正態分佈的標準差
  • size:輸出的隨機數的維度大小
mu, sigma = 0, 0.1
s = np.random.normal(mu, sigma, 1000)
print(s)

輸出:

array([ 0.19041012,  0.00838044,  0.1057123 ,  0.23882289, -0.07714065,
        0.08705977, -0.02627654, -0.19861715,  0.00686985,  0.15619873,
        ...,
        0.08181724, -0.10527211, -0.1526315 , -0.11637847, -0.08640187,
        0.00130285,  0.08699732,  0.17909456, -0.1137537 , -0.13693572])

2. 生成泊松分佈數據

使用numpy庫的poisson(lam, size=None)函數可以生成一個參數為λ給出的泊松分佈的隨機數。

lam = 3 # lamda
size = 1000
s = np.random.poisson(lam, size)
print(s)

輸出:

array([1, 2, 2, 1, 7, 3, 3, 5, 1, 6, ..., 6, 5, 1, 2, 4, 3, 2, 1, 1, 2])

3. 生成Beta分佈數據

Beta分佈是一種常用的概率分佈,其結果在\[0,1\]區間內。使用numpy庫的beta函數,可以選擇生成形態參數為α和β的Beta分佈的隨機數。

alpha, beta = 2, 5
s = np.random.beta(alpha, beta, 1000)
print(s)

輸出:

array([ 0.31903005,  0.11387955,  0.42286611,  0.44858347, ..., 
        0.46468957,  0.38638198,  0.29959251,  0.18525859])

四、分佈函數的可視化

可視化可以幫助我們更好的理解生成的數據分佈情況,而matplotlib庫是一個用於繪圖的常用工具,在與numpy配合使用時,可隨機生成各種圖形。下面我們來生成一個正態分佈的圖形可視化,代碼如下:

import matplotlib.pyplot as plt
mu, sigma = 0, 0.1
s = np.random.normal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
         np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
         linewidth=2, color='r')
plt.show()

輸出:

五、總結

NumPy庫的Random模塊為我們生成高效、隨機、分佈式的數據提供了非常好的方法,我們可以根據需要生成符合自己要求的分佈式的隨機數據並進行可視化,大大提高了數據模擬和隨機算法等方面的效率。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/275895.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 16:07
下一篇 2024-12-17 19:37

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • KeyDB Java:完美的分佈式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 光模塊異常,SFP未認證(entityphysicalindex=6743835)——解決方案和

    如果您遇到類似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的問題,那麼…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29

發表回復

登錄後才能評論