前言:
在现代数据科学和机器学习领域,随机性是解决许多问题的关键。而NumPy作为Python中一流的科学计算库,其强大的随机函数模块为我们提供了丰富的工具,用以模拟实验、生成数据或执行随机抽样。本文将深入探讨NumPy中常用的随机函数,为你揭示其背后的原理以及如何在数据科学项目中充分利用这些功能。无论你是新手还是经验丰富的开发者,本文都将帮助你更好地理解和应用NumPy的随机函数,为你的项目注入新的活力。
Numpy常用random随机函数
seed 向随机数生成器传递随机状态种子
import random random.seed(10) print(random.random()) # random.random()用来随机生成一个0到1之间的浮点数,包括零。 print(random.random()) print(random.random()) # 这里没有设置种子,随机数就不一样了
讯享网

注意:这里不一定就写10,你写几都行,只要写上一个整数,效果都是一样的,写0都行,但是不能为空,为空就相当于没有用seed
seed只限在这一台电脑上,如果换台电脑值就变了
rand 返回[0,1]之间,从均匀分布中抽取样本
讯享网import numpy as np 一维 = np.random.rand(3) print(一维) print('-'*30) 二维 = np.random.rand(2,3) print(二维) print('-'*30) 三维 = np.random.rand(2,3,4) print(三维)

我们数据分析的三部曲:Numpy、Pandas、matplotlib,后期我们在使用matplotlib画图时会用到均匀分布
import numpy as np import matplotlib.pyplot as plt # 绘制正弦曲线 x轴 = np.linspace(-10,10,100) # 在[-10,10]闭区间或半闭区间中,数量为100 y轴 = np.sin(x轴) # sin正弦、cos余弦 plt.plot(x轴,y轴) plt.show() #加入噪声后 import numpy as np import matplotlib.pyplot as plt # 绘制正弦曲线 x轴 = np.linspace(-10,10,100) # 在[-10,10]闭区间中,数量为100 y轴 = np.sin(x轴) + np.random.rand(len(x轴)) # 生成均匀分布,len(x轴)就是维度,相加就是定义元素的相加 plt.plot(x轴,y轴) plt.show()
结果如图所示:


randn 返回标准正态分布随机数(浮点数)平均数0,方差1

讯享网import numpy as np 一维 = np.random.randn(3) print(一维) print('-'*30) 二维 = np.random.randn(2,3) print(二维) print('-'*30) 三维 = np.random.randn(2,3,4) print(三维) print('-'*30)



randint 随机整数
import numpy as np a = np.random.randint(3) print(f'随机0至3之间的整数是:{
a}') b = np.random.randint(1,10) print(f'随机1至10之间的整数是:{
b}') c = np.random.randint(1,10,size=(5,)) print(f'随机1至10之间取5个元素组成一维数组{
c}') d = np.random.randint(1,20,size=(3,4)) print(f'随机1至20之间取12个元素组成二维数组:\n{
d}') e = np.random.randint(1,20,size=(2,3,4)) print(f'随机1至20之间取24个元素组成三维数组:\n{
e}')
random 生成0.0至1.0的随机数
讯享网import numpy as np 一维 = np.random.random(3) print(f'生成3个0.0至1.0的随机数:\n{
一维}') 二维 = np.random.random(size=(2,3)) print(f'生成2行3列共6个数的0.0至1.0的随机数:\n{
二维}') 三维 = np.random.random(size=(3,2,3)) print(f'生成三块2行3列,每块6个数的0.0至1.0的随机数:\n{
三维}')
choice 从一维数组中生成随机数
import numpy as np # 第一参数是一个1维数组,如果只有一个数字那就看成range(5) # 第二参数是维度和元素个数,一个数字是1维,数字是几就是几个元素 a = np.random.choice(5,3) print(f'从range(5)中拿随机数,生成只有3个元素的一维数组是:{
a}')
讯享网import numpy as np b = np.random.choice(5,(2,3)) print(f'从range(5)中拿随机数,生成2行3列的数组是:\n{
b}')
import numpy as np c = np.random.choice([1,2,9,4,8,6,7,5],3) print(f'从[1,2,9,4,8,6,7,5]数组中拿随机数,3个元素:{
c}')
讯享网import numpy as np d = np.random.choice([1,2,9,4,8,6,7,5],(2,3)) print(f'从[1,2,9,4,8,6,7,5]数组中拿随机数,生成2行3列的数组是:\n{
d}')
shuffle(数组)把一个数进行随机排列
import numpy as np 一维数组 = np.arange(10) print(f'没有随机排列前的一维数组{
一维数组}') np.random.shuffle(一维数组) print(f'随机排列后的一维数组{
一维数组}')

讯享网import numpy as np 二维数组 = np.arange(20).reshape(4,5) print(f'没有随机排列前的二维数组\n{
二维数组}\n') np.random.shuffle(二维数组) print(f'随机排列后的二维数组\n{
二维数组}')

*注意:多维数组随机排列只按行随机,列是不变的
import numpy as np 三维数组 = np.arange(12).reshape(2,2,3) print(f'没有随机排列前的三维数组\n{
三维数组}\n') np.random.shuffle(三维数组) print(f'随机排列后的三维数组\n{
三维数组}')

permutation(数组) 把一个数组随机排列或者数字全排列
讯享网import numpy as np # 与上面讲的np.random.shuffle(一维数组)效果一样,就是把一维数组重新排序了 排列 = np.random.permutation(10) # 这里的10就看成是range(10) print(排列)
import numpy as np 二维数组 = np.arange(9).reshape((3,3)) print(f'没有随机排列前的二维数组是\n{
二维数组}\n') 排序后 = np.random.permutation(二维数组) print(f'随机排列后的二维数组是\n{
排序后}\n') print(f'看一下原来的二维数组变了吗?\n{
二维数组}')
normal 生成正态分布数字
讯享网import numpy as np 数组 = np.random.normal(1,10,10) # 平均值1,方差10,10个数 print(数组)



高斯分布重要量的性质
1. 密度函数关于平均值对称
2. 平均值是它的众数(statistical mode)以及中位数(median)
3. 函数曲线下68.%的面积在平均值左右的一个标准差范围内
4. 95.%的面积在平均值左右两个标准差2σ的范围内
5. 99.%的面积在平均值左右三个标准差3σ的范围
uniform 均匀分布
import numpy as np 数组 = np.random.uniform(1,10,10) print(f'在1到10之间生成10个随机数:\n{
数组}')
讯享网import numpy as np 数组 = np.random.uniform(1,10,(2,3)) print(f'在1到10之间生成2行3列共计6个随机数:\n{
数组}')
结尾:
在数据科学的世界里,随机性是不可避免的,而NumPy的random模块为我们提供了一个强大而灵活的工具箱,使我们能够在实验和模拟中更好地模拟真实世界的复杂性。通过本文的学习,你已经了解了NumPy中常用的随机函数,从简单的随机数生成到更复杂的分布抽样,这些功能将在你的项目中大有裨益。随机性可能是不可预测的,但通过掌握NumPy的随机函数,你可以在你的数据科学旅程中更加从容地面对这个变幻莫测的世界。让我们一起深入研究NumPy的random模块,为数据科学的未知领域打开新的大门。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/47516.html