1. 程式人生 > >Python學習筆記-資料分析-Numpy04-隨機數

Python學習筆記-資料分析-Numpy04-隨機數

Numpy隨機數

1、隨機數是資料分析中很重要的一個輔助工具。裡面包含正太分佈、均勻分佈等等很多型別。通過隨機數可以生成我們想要的符合某個特性的資料,以便我們學習新的工具包或者測試某個演算法。
2、這裡主要使用到numpy.random。它有比較多的方法,這裡只介紹一些常用的。
import numpy as np

# 這裡匯入matplotlib模組,主要是為了用圖表來輔助分析
import matplotlib.pyplot as plt
# 魔法函式,每次執行自動生成圖表
% matplotlib inline 

一、隨機數的生成— —.normal()

# .normal()會生成一個標準的正態分佈樣本。
# 生成一個標準正太分佈的2×2樣本值 srn = np.random.normal(size=(2,2)) srn1 = np.random.normal(size = (3)) print(srn, type(srn)) print(srn1, type(srn1))

執行結果如下:

[[-0.41595877  1.11532727]
 [-0.70863366 -0.99436532]] <class 'numpy.ndarray'>
[-0.96559852 -1.12385658 -1.00368828] <class 'numpy.ndarray'>

二、隨機數的生成— —.rand()

# 通過.rand()這個函式:生成符合均勻分佈的一個[0,1)之間的隨機浮點數或N維浮點陣列
# 生產一個隨機浮點數樣本。
sr1 = np.random.rand()
print(sr1, type(sr1))

# 生產一個有3個隨機浮點的一維陣列
sr2 = np.random.rand(3)
print(sr2, type(sr2))

# 生產一個3*3的二維隨機浮點陣列
sr3 = np.random.rand(3,3)
print(sr3, type(sr3))

# 用圖表來演示一下均勻分佈
sr_t1 = np.random.rand(500)
sr_t2 = np.random.
rand(500) plt.scatter(sr_t1, sr_t2)

運作結果如下:

0.8483121400402119 <class 'float'>
[0.09368106 0.77192309 0.14391224] <class 'numpy.ndarray'>
[[0.83304206 0.95253513 0.31348246]
 [0.15265572 0.60699124 0.90215839]
 [0.2633082  0.00708486 0.92831763]] <class 'numpy.ndarray'>
<matplotlib.collections.PathCollection at 0x2455afb6f60>

在這裡插入圖片描述

三、隨機數的生成— —.randn()

通過.randn()這個函式生成符合正態分佈的一個浮點數或N維浮點陣列。由於randn和normal都是生成符合正態分佈的樣本資料,所以下面我簡單的說一下對randn()和normal()的理解,有什麼不對的地方希望能夠得到指正: 1、normal是通過(loc=0.0, scale=1.0, size=None)這三個引數來調整生成的不同“均值、標準差和維度”樣本資料。 2、randn沒有可以調整“均值和標準差”的引數,所以生成的樣本資料或樣本陣列的資料都是在[0,1)之間。

# normal舉例
# 注意生成的樣本資料的範圍
a = np.random.normal(size=4)
a1 = np.random.normal(loc=3, scale=5, size=4)
print(a)
print(a1)
print('-----------------------------------')
# randn舉例
# 注意生成的樣本資料和樣本陣列的資料
b = np.random.randn(2)
b1 = np.random.randn(2,3)
print(b)
print(b1)
print('-----------------------------------')

# 用圖表來演示一下正態分佈
srrn1 = np.random.randn(500)
srrn2 = np.random.randn(500)
plt.scatter(srrn1, srrn2)

執行結果如下:

[ 0.18514025  0.11667968 -1.17234504 -1.32040683]
[ 4.53035666  0.5300141  -0.48759922 -7.33107027]
-----------------------------------
[ 1.02453864 -2.26215368]
[[ 0.44707795  1.99943163 -1.0518808 ]
 [-0.48363184 -0.03158104  0.58360637]]
-----------------------------------
<matplotlib.collections.PathCollection at 0x2455b055828>

在這裡插入圖片描述

四、隨機數的生成— —.randint()

# 通過.randint()這個函式生成一個整數或N維整數陣列.
# 該函式要求至少有一個引數。
# 該函式有4個引數:low, high=None, size=None, dtype='l'。要想使用這個引數則至少要包含一個(low)這個引數。
# 如果high不為None時,取[low,high)之間隨機整數,否則取值[0,low)之間隨機整數,且high必須大於low,dtype引數:只能是int型別  

# low=3:生成1個[0,3)之間隨機整數 
a = np.random.randint(3)
print(a)
print('-----------------------------------')
# low=5,size=5 :生成5個[0,5)之間隨機整數
b = np.random.randint(5,size=5)
print(b)
print('-----------------------------------')
# low=2,high=6,size=5:生成5個[2,6)之間隨機整數
c = np.random.randint(2,6,size=5)
print(c)
print('-----------------------------------')
# low=3,size=(3,3):生成一個3x3整數陣列,取數範圍:[0,2)隨機整數   
d = np.random.randint(3,size=(3,3))
print(d)
print('-----------------------------------')
# low=2,high=6,size=(2,3):生成一個2*3整數陣列,取值範圍:[2,6)隨機整數
e = np.random.randint(2,6,(2,3))
print(e)

執行結果如下:

1
-----------------------------------
[1 0 4 2 2]
-----------------------------------
[2 4 4 4 3]
-----------------------------------
[[2 2 2]
 [2 1 2]
 [0 0 0]]
-----------------------------------
[[2 5 3]
 [4 2 2]]