当前位置: 首页 > news >正文

Numpy入门(2)—随机数

随机数np.random

主要知识点:

  • 创建ndarray随机数组
  • 随机打乱ndarray元素顺序
  • 随机选取元素

2.1 创建随机ndarray数组

创建随机ndarray数组主要包含设置随机种子、均匀分布和正态分布三部分内容,具体代码如下所示。

  • 设置随机数种子
# 可以多次运行,观察程序输出结果是否一致
# 如果不设置随机数种子,观察多次运行输出结果是否一致
np.random.seed(10)
a = np.random.rand(3, 3)
a

array([[0.77132064, 0.02075195, 0.63364823], [0.74880388, 0.49850701, 0.22479665], [0.19806286, 0.76053071, 0.16911084]])

  • 均匀分布
# 生成均匀分布随机数,随机数取值范围在[0, 1)之间
a = np.random.rand(3, 3)
a

array([[0.08833981, 0.68535982, 0.95339335], [0.00394827, 0.51219226, 0.81262096], [0.61252607, 0.72175532, 0.29187607]])

# 生成均匀分布随机数,指定随机数取值范围和数组形状
a = np.random.uniform(low = -1.0, high = 1.0, size=(2,2))
a

array([[ 0.83554825, 0.42915157], [ 0.08508874, -0.7156599 ]])

  • 正态分布
# 生成标准正态分布随机数
a = np.random.randn(3, 3)
a

array([[ 1.484537 , -1.07980489, -1.97772828], [-1.7433723 , 0.26607016, 2.38496733], [ 1.12369125, 1.67262221, 0.09914922]])

# 生成正态分布随机数,指定均值loc和方差scale
a = np.random.normal(loc = 1.0, scale = 1.0, size = (3,3))
a

array([[2.39799638, 0.72875201, 1.61320418], [0.73268281, 0.45069099, 1.1327083 ], [0.52385799, 2.30847308, 1.19501328]])

2.2 随机打乱ndarray数组顺序

  • 随机打乱1维ndarray数组顺序,发现所有元素位置都被打乱了,代码如下所示。
# 生成一维数组
a = np.arange(0, 30)
print('before random shuffle: ', a)
# 打乱一维数组顺序
np.random.shuffle(a)
print('after random shuffle: ', a)

('before random shuffle: ', array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]))
('after random shuffle: ', array([10, 21, 26, 7, 0, 23, 2, 17, 18, 20, 12, 6, 9, 3, 25, 5, 13,
14, 24, 29, 1, 28, 11, 15, 27, 16, 19, 4, 22, 8]))

随机打乱2维ndarray数组顺序,发现只有行的顺序被打乱了,列顺序不变,代码如下所示。

# 生成一维数组
a = np.arange(0, 30)
# 将一维数组转化成2维数组
a = a.reshape(10, 3)
print('before random shuffle: \n{}'.format(a))
# 打乱一维数组顺序
np.random.shuffle(a)
print('after random shuffle: \n{}'.format(a))

before random shuffle:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]
[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]
[24 25 26]
[27 28 29]]
after random shuffle:
[[15 16 17]
[12 13 14]
[27 28 29]
[ 3 4 5]
[ 9 10 11]
[21 22 23]
[18 19 20]
[ 0 1 2]
[ 6 7 8]
[24 25 26]]

2.3 随机选取元素

# 随机选取部分元素
a = np.arange(30)
b = np.random.choice(a, size=5)
b

array([ 0, 24, 12, 5, 4])

代码合集

import numpy as npdef func1():# 可以多次运行,观察程序输出结果是否一致# 如果不设置随机数种子,观察多次运行输出结果是否一致np.random.seed(5)a = np.random.rand(3, 3)np.random.seed(None)print(a)# 生成均匀分布随机数,随机数取值范围在[0, 1)之间a = np.random.rand(3, 3)print(a)# 生成均匀分布随机数,指定随机数取值范围和数组形状a = np.random.uniform(low=-1.0, high=1.0, size=(2, 2))print(a)def func2():# 生成标准正态分布随机数print("正太分布:rand_n")a = np.random.randn(3, 3)print(a)# 生成正态分布随机数,指定均值loc和方差scalea = np.random.normal(loc=1.0, scale=1.0, size=(3))print(a)def func3():a = np.arange(0, 30)print('before random shuffle: ', a)np.random.shuffle(a)print("after random shuffle: ", a)# 转为二维的,10 * 3a = a.reshape(10, 3)print(a)np.random.shuffle(a)print(a)# 随机选取元素print("random choice")a = np.arange(30)a.reshape(10, 3)b = np.random.choice(a, size=5)print(b)if __name__ == "__main__":# func1()# func2()func3()
http://www.lryc.cn/news/128576.html

相关文章:

  • ansible的playbook剧本
  • 【03 英语语法:从句(名词从句、定语从句/形容词从句、状语从句/副词从句)】
  • vue动态修改audio地址
  • CF113A Grammar Lessons 题解
  • puzzle(0414)六边形拼图
  • 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测
  • BEV感知实时构建路口拓扑 觉非科技基于MapTR的优化与实践
  • 如何在TikTok“点火”?用时下最流行的工具解码赚钱
  • set NOCOUNT on
  • 垃圾回收机制
  • Golang 程序性能优化利器 PGO 详解(一):简单介绍及使用
  • redis key操作的相关命令
  • WebRTC | 网络传输协议RTP与RTCP
  • 160. 相交链表
  • 【MFC】12.双缓冲序列化机制-笔记
  • Linux 终端会话中,启动任务并放到后台运行
  • 软考笔记——10.项目管理
  • 算法与数据结构(二十四)最优子结构原理和 dp 数组遍历方向
  • Java Vue Uniapp MES生产执行管理系统
  • 深入探究Socks5代理与IP代理在网络安全与爬虫中的应用
  • Vue使用jspdf和html2canvas组件库结合导出PDF文件
  • 7. 实现 API 自动生成
  • 使用Druid解析SQL,获取SQL中所有使用的表
  • 公司内部测试团队可以替代专业的软件检测机构吗,性能测试怎么收费?
  • Three.js之相机、渲染器、光源、动画、性能监测
  • Seaborn图表使用指南!
  • [C++ 网络协议编程] TCP/IP协议
  • Unity用NPOI创建Exect表,保存数据,和修改删除数据。以及打包后的坑——无法打开新创建的Exect表
  • 记一次fegin调用的媒体类型问题
  • 在Hive/Spark上运行执行TPC-DS基准测试 (ORC和TEXT格式)