numpy库中,随机取样模块random的大量功能经常被用到,本文记录最常用到的部分函数及功能。
numpy.random
1.常用函数
1.1随机数据生成
函数 | 用法 |
---|---|
rand() | rand(d0, d1, …, dn) |
randn() | rand(d0, d1, …, dn) |
uniform(x,y) | np.random.uniform(5,10) |
Randn(d0,…dn) | 3*np.random.randn(5,4)+2 |
Randint(low,high,[size]) | Np.random.randint(3,size=(2,4)) |
Random_sample([size]) | Np.random.random_sample((5,)) |
choice(a,[size],replace,p) | np.random.choice([‘a’,‘b’,‘c’,‘d’],size=[3,3]) |
1.1.1 rand()
rand(d0, d1, ..., dn)
随机生成 [0, 1) 之间的数字。无参数时返回一个数字。
import numpy as np
a=np.random.rand()
b=np.random.rand(3,2)
print(a)
print(b)
输出结果:
0.2971520835020539
[[0.90599181 0.20214398]
[0.22889111 0.09222375]
[0.64262873 0.31477416]]
1.1.2 randn()
randn(d0, d1, ..., dn)
从均值为0,方差为1的高斯分布中随机采样浮点型数据返回。
import numpy as np
#生成 N(3, 4) 分布的随机数据[4, 3]
print(2*np.random.randn(4,3)+3)
输出结果:
[[ 3.21451812 -0.09456433 0.20974838]
[ 3.77299104 1.13216474 3.00898093]
[ 2.74142993 2.57746403 5.48446566]
[ 3.88009678 3.49210969 1.18051403]]
1.1.3 randint()
randint(low, high=None, size=None, dtype='l')
随机生成size维度个 [low, high) 之间的整数
import numpy as np
print(np.random.randint(1,100,(5,5)))
输出结果:
[[71 69 74 6 69]
[74 75 50 43 91]
[20 40 30 14 4]
[30 24 65 47 76]
[75 3 42 55 35]]
1.1.4 uniform()
uniform(low=0.0, high=1.0, size=None)
随机生成size维度个 [low, high) 之间的float数
import numpy as np
print(np.random.uniform([1,3,5,7],[2,4,6,8]))
输出结果:
[1.04811865 3.90003467 5.25567536 7.37078057]
1.1.5 choice()
choice(a, size=None, replace=True, p=None)
使用a中的元素生成一个size维度的数据。
参数:
replace
:是否允许放回取样
p
:a中各元素出现的概率
import numpy as np
a=['A','B','C','D']
p=[0.35,0.30,0.20,0.15]
print(np.random.choice(a,[5,5],p))
输出结果:
[[‘B’ ‘A’ ‘C’ ‘B’ ‘D’]
[‘D’ ‘A’ ‘B’ ‘B’ ‘A’]
[‘B’ ‘A’ ‘A’ ‘C’ ‘B’]
[‘D’ ‘D’ ‘C’ ‘B’ ‘C’]
[‘B’ ‘A’ ‘C’ ‘A’ ‘D’]]
1.2常用分布函数
binomial(n, p[, size])
chisquare(df[, size])
exponential([scale, size])
geometric(p[, size])
normal([loc, scale, size])
poisson([lam, size])
rayleigh([scale, size])
1.2.1 正态分布normal()
normal(loc=0.0, scale=1.0, size=None)
生成size个服从N(loc,scale^2)分布的数据
import numpy as np
import matplotlib.pyplot as plt
#生成1000个服从N(3,6.25)分布的点,并绘制散点图
x=np.random.normal(3,2.5,1000)
y=np.random.normal(3,2.5,1000)
plt.scatter(x,y)
输出结果:
1.2.2 泊松分布possion()
poisson(lam=1.0, size=None)
生成size个服从P(lam)分布的数据
import numpy as np
import matplotlib.pyplot as plt
s = np.random.poisson(5, 10000)
#绘制P(5)的概率密度函数
count, bins, ignored = plt.hist(s, 14, density=True)
plt.show()
输出结果:
1.3常用排列
函数 | 用法 |
---|---|
shuffle(x) | np.random.shuffle(array) |
permutation(x) | np.random.permutation([1,4,9,11,15]) |
1.3.1 shuffle()
import numpy as np
a=np.arange(0,10)
print(a)
np.random.shuffle(a)
print(a)
输出结果:
[0 1 2 3 4 5 6 7 8 9]
[3 0 5 8 2 1 9 7 6 4]
1.4伪随机函数
函数 | 用法 |
---|---|
seed([seed]) | np.random.seed(5) |
2.函数使用练习
import numpy as np
#rand(r0,r1,...rn) - 生成一个n维元素容器,值域(0,1)
a1=np.random.rand(3,2,3)
print("a1=",a1)
#uniform(min,max) - 生成一个(min,max)内的随机数,默认类型float
a2=np.random.uniform(5,10)
print("a2=",a2)
#randn(d0,d1...dn) - 从标准正态分布中返回n维样本值
a3=6.25*np.random.randn(8)+2
print("a3=",a3)
#randint(low=0,high,size) - 返回一个随机size维整数容器,值域[low,high)
a4=np.random.randint(5,size=(4,4))
print("a4=",a4)
#choice(a,size,replace=True,p) - 生成一个由值域a填充的size维数组容器,replace为是否放回取样,p为a中个数据取样概率
exp=('A','B','C','D')
a5=np.random.choice(exp,size=(4,4),replace=True,p=(0.1,0.2,0.3,0.4))
print("a5=",a5)
#shuffle(x) - 打乱容器x中元素排序
np.random.shuffle(a5)
print("a5=",a5)