目录
前言
本文介绍版本:Numpy1.22
在numpy1.17开始,Generator代替RandomState,但是网上的博客多比较老,还都是介绍的RandomState,写这篇文章介绍一下新的numpy.random的基本使用。以下展示的是新版Generator和旧版RandomState的比较:
创建
随机数的产生需要先创建一个随机数生成器(Random Number Generator)
然后可以使用生成器(Generator)的函数方法创建。
使用random()函数返回一个在0~1的随机浮点值:
import numpy as np
rng = np.random.default_rng(123)# 创建一个种子为123的生成器,可以为空,空时会随机分配一个种子。
print(rng)
# Generator(PCG64)
rfloat = rng.random()
print(rfloat)
# 0.6823518632481435
使用
在使用时创建好上述的rng
1、创建指定维度数组
想创建指定维度的数组,可以向random()函数传入元组,其值等于你想要的shape。返回的值依旧是0~1的浮点值,
ndarr=rng.random((3,2))
ndarr
'''
array([[0.68235186, 0.05382102],
[0.22035987, 0.18437181],
[0.1759059 , 0.81209451]])
'''
ndarr.shape
# (3, 2)
2、创建随机一维整数
rints = rng.integers(low=0, high=10, size=3)
print(rints)
# array([6, 2, 7])
3、随机选择
rng.choice([[0, 1, 2], [3, 4, 5], [6, 7, 8]], 2)
'''
array([[3, 4, 5],
[0, 1, 2]])
'''
4、随机排列
想打乱数组,numpy有两个函数可以做到,一个是shuffle(),另一个是permutation()
arr = np.arange(10)
rng.shuffle(arr)
arr
[5, 3, 4, 1, 9, 8, 2, 7, 0, 6] # random
rng.permutation(10)
# array([5, 3, 4, 1, 9, 8, 2, 7, 0, 6])
分布
函数 | 解释 |
---|---|
beta(a, b[, size]) | 从 Beta 分布中抽取样本。 |
binomial(n, p[, size]) | 从二项分布中抽取样本。 |
exponential([scale, size]) | 从指数分布中抽取样本。 |
geometric(p[, size]) | 从几何分布中抽取样本 |
logistic([loc, scale, size]) | 从逻辑分布中抽取样本。 |
normal([loc, scale, size]) | 从正态(高斯)分布中抽取随机样本。 |
standard_normal([size, dtype, out]) | 从标准正态分布(平均值=0,标准差=1)中抽取样本。 |