前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy教程:Numpy.random模块使用(新)

Numpy教程:Numpy.random模块使用(新)

作者头像
Crayon鑫
发布2023-10-10 16:24:22
2160
发布2023-10-10 16:24:22
举报

本文介绍版本:Numpy1.22

在numpy1.17开始,Generator代替RandomState,但是网上的博客多比较老,还都是介绍的RandomState,写这篇文章介绍一下新的numpy.random的基本使用。以下展示的是新版Generator和旧版RandomState的比较:

在这里插入图片描述
在这里插入图片描述

numpy.random官方文档:numpy.random


创建

随机数的产生需要先创建一个随机数生成器(Random Number Generator) 然后可以使用生成器(Generator)的函数方法创建。

使用random()函数返回一个在0~1的随机浮点值:

代码语言:javascript
复制
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的浮点值,

代码语言:javascript
复制
ndarr=rng.random((3,2))
ndarr
'''
array([[0.68235186, 0.05382102],
       [0.22035987, 0.18437181],
       [0.1759059 , 0.81209451]])
      '''

ndarr.shape
# (3, 2)

2、创建随机一维整数

代码语言:javascript
复制
rints = rng.integers(low=0, high=10, size=3)
print(rints)
# array([6, 2, 7])

integers(low[, high, size, dtype, endpoint]) 返回从low(包括)到high(不包括)的随机整数,或者如果endpoint=True,则返回low(包括)到high(包括)的随机整数。

3、随机选择

代码语言:javascript
复制
rng.choice([[0, 1, 2], [3, 4, 5], [6, 7, 8]], 2)
'''
array([[3, 4, 5], 
       [0, 1, 2]])
'''

choice(a[, size, replace, p, axis, shuffle]) 从给定数组生成随机样本 注意a可以为整型,也可以是ndarray,list,tuple

4、随机排列

想打乱数组,numpy有两个函数可以做到,一个是shuffle(),另一个是permutation()

shuffle()和permutation()的区别: shuffle()会改变输入的数组;输入的参数可以是array,list等序列,但是不能是int。 permutation()不会改变输入的数组,会返回一个数组的copy;输入的参数可以是int,numpy会自动将int用arange()转换。

代码语言:javascript
复制
arr = np.arange(10)
rng.shuffle(arr)
arr
[5, 3, 4, 1, 9, 8, 2, 7, 0, 6] # random
代码语言:javascript
复制
rng.permutation(10)
# array([5, 3, 4, 1, 9, 8, 2, 7, 0, 6])

shuffle(x[, axis]) 通过变换数组或序列的内容修改原有数组或序列。

permutation(x[, axis]) 随机置换一个序列,或者返回一个置换后的范围。


分布

函数

解释

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)中抽取样本。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建
  • 使用
    • 1、创建指定维度数组
      • 2、创建随机一维整数
        • 3、随机选择
          • 4、随机排列
          • 分布
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档