在 python 中生成随机样本的所有你需要的示例列表
长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩
在这篇博客中,我将演示如何根据不同的需求在python中生成样本随机数。使用随机和 Numpy。
import random
import numpy as np
场景1:获取随机整数
场景2:获取带小数的随机数
场景3:获取具有已知统计数据/分布的随机数
场景4:使用现有的数字列表
如果您只需要 0 到 10 之间的随机整数:
random.randint(0, 10)
# 7
如果您需要 0 到 10 之间的随机整数列表(例如 15):
np.random.randint(0, 10, 15)
# array([4, 4, 3, 0, 0, 1, 6, 9, 5, 3, 1, 6, 8, 5, 9])
如果你想得到一个非常随机和超大的整数,你可以这样做:
import time
int(time.time())
# 1669855560
获取 0 到 1 之间的随机数:
random.random()
# 0.4353251333114442
获取 0 到 10 之间的随机数:
random.uniform(0, 10)
# 9.210714292877288
如果您需要 0 到 10 之间的随机数列表(例如 5):
np.random.uniform(0, 10, 5)
# array([8.70816807, 5.13392407, 0.4998664 , 5.97627955, 2.15261284])
如果您已经知道所需样本的均值、众数和最大值,您可能想尝试三角函数。它有一个很酷的参数,称为模式:分布峰值出现的值。该值必须满足条件 left <= mode <= right
。如果我们将它设置为 5,样本将更有可能出现在 5 左右。
np.random.triangular(0, 5, 10, 5) # left, mode, right, sample
# [3.7525956 5.16902974 3.79206193 8.46765312 6.23403873]
如果您想从二项分布中抽取样本,您可以尝试一个名为binomial的函数。如果我们设置 n = 20,p = 0.25,大小为 2000:
sample = np.random.binomial(20, 0.25, 2000)
import matplotlib.pyplot as plt
plt.hist(sample)
当您想从给定的均值 (50) 和标准差 (3) 生成随机数时:
random.normalvariate(50,3)
# 49.25030663269399
当您想创建一个随机数列表(例如 5)时,给定一个已知的均值 (50) 和一个标准差 (3):
[random.normalvariate(50,3) for _ in range(5)]
# [49.873333367806644, 45.72729827453879, 47.69029669578644,
# 48.25661520735196, 47.26944802688148]
np.random.normal(50, 3, 5)
# array([47.18605431, 48.9894249 , 49.50258396, 49.85496526, 48.1503549 ])
当您想生成总和为某个值 (1) 的随机数列表(例如 10)时,您将需要名为dirichlet的函数。
sample = np.random.dirichlet(np.ones(10), size=1)
print(sample)
print(np.sum(sample))
# [[0.23988202 0.08378129 0.19439318 0.04282444 0.01568082 0.04033996
# 0.07864523 0.10856321 0.18118435 0.0147055 ]]
# 1.0000000000000002
假设我们有一个数字列表,如下所示:
sample = np.random.randint(0, 10, 20)
sample
# array([0, 3, 1, 1, 0, 2, 5, 1, 0, 7, 3, 6, 6, 9, 3, 7, 0, 5, 6, 6])
如果你想随机洗牌样本:
np.random.shuffle(sample)
sample
# array([1, 3, 7, 5, 3, 0, 6, 0, 0, 1, 3, 2, 9, 6, 6, 7, 6, 1, 5, 0])
如果要从样本中随机获取 5 个元素:
for _ in range ( 5 ):
print (np.random.choice(sample))
# 1
# 7
# 6
# 9
# 0
如果你想随机排列一个序列或返回一个排列的范围,下面是你可以做什么的几个例子:
np.random.permutation( 10 )
# array([2, 5, 0, 3, 1, 7, 8, 4, 6, 9])
np.random.permutation(sample)
# array([2, 0, 3 , 9, 6, 0, 3, 6, 5, 5, 6, 0, 7, 6, 0, 1, 1, 1, 7, 3])
arr = np.arange( 9 ).reshape(( 3 , 3 ))
np.random.permutation(arr)
# array([[3, 4, 5],
# [6, 7, 8],
# [0, 1, 2]])
这篇简短的博客总结了许多在 python 中生成随机数的流行技术。了解这些技巧应该可以帮助您根据需要生成虚拟数据。
本书针对深度学习及开源框架——PyTorch,采用简明的语言进行知识的讲解,注重实战。全书分为4篇,共19章。深度学习基础篇(第1章~第6章)包括PyTorch简介与安装、机器学习基础与线性回归、张量与数据类型、分类问题与多层感知器、多层感知器模型与模型训练、梯度下降法、反向传播算法与内置优化器。计算机视觉篇(第7章~第14章)包括计算机视觉与卷积神经网络、卷积入门实例、图像读取与模型保存、多分类问题与卷积模型的优化、迁移学习与数据增强、经典网络模型与特征提取、图像定位基础、图像语义分割。自然语言处理和序列篇(第15章~第17章)包括文本分类与词嵌入、循环神经网络与一维卷积神经网络、序列预测实例。生成对抗网络和目标检测篇(第18章~第19章)包括生成对抗网络、目标检测。
本书适合人工智能行业的软件工程师、对人工智能感兴趣的学生学习,同时也可作为深度学习的培训教程。
日月光华:网易云课堂资深讲师,经验丰富的数据科学家和深度学习算法工程师。擅长使用Python编程,编写爬虫并利用Python进行数据分析和可视化。对机器学习和深度学习有深入理解,熟悉常见的深度学习框架( PyTorch、TensorFlow)和模型,有丰富的深度学习、数据分析和爬虫等开发经验,著有畅销书《Python网络爬虫实例教程(视频讲解版)》。
链接:https://item.jd.com/13528847.html
精彩回顾
《Pandas1.x实例精解》新书抢先看!
【第1篇】利用Pandas操作DataFrame的列与行
【第2篇】Pandas如何对DataFrame排序和统计
【第3篇】Pandas如何使用DataFrame方法链
【第4篇】Pandas如何比较缺失值以及转置方向?
【第5篇】DataFrame如何玩转多样性数据
【第6篇】如何进行探索性数据分析?
【第7篇】使用Pandas处理分类数据
【第8篇】使用Pandas处理连续数据
【第9篇】使用Pandas比较连续值和连续列
【第10篇】如何比较分类值以及使用Pandas分析库
长按关注《Python学研大本营》
长按二维码,加入Python读者群
扫码关注《Python学研大本营》,加入读者群,分享更多精彩
https://towardsdev.com/all-kinds-of-randoms-in-python-9e382b23fb7b