Numpy常用random随机函数

简介: Numpy常用random随机函数

         

         

Numpy常用random随机函数

seed 向随机数生成器传递随机状态种子

只要random.seed( * ) seed里面的值一样,那随机出来的结果就一样。所以说,seed的作用是让随机结果可重现。也就是说当我们设置相同的seed,每次生成的

随机数相同。如果不设置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

randn生成一个从标准正态分布中得到的随机标量,标准正态分布即N(0,1)。

randn(n)和randn(a1,a2,…)的用法和rand相同

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(排列)

normal 生成正态分布数字

正态分布,又叫常态分布,又叫高斯分布

normal [平均值,方差,size]

import numpy as np
数组 = np.random.normal(1,10,10) # 平均值1,方差10,10个数
print(数组)

高斯分布重要量的性质

1. 密度函数关于平均值对称
2. 平均值是它
的众数(statistical mode)以及中位数(median)

3. 函数曲线下68.268949%的面积在平均值左右的一个标准差范围内

4. 95.449974%的面积在平均值左右两个标准差2σ的范围内
5. 99.730020%的面积在平均值左右三个标准差3σ的范围

uniform 均匀分布

import numpy as np
数组 = np.random.uniform(1,10,10)
print(f'在1到10之间生成10个随机数:\n{数组}')
相关文章
|
Python
NumPy—random随机数生成函数总结
import numpy as np 1、np.linspace(start,end,num) start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。
2163 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
60 0
|
3月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
52 0
|
3天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
13 3
|
4天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
13 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
43 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
63 10
|
1月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
82 4
|
3月前
|
机器学习/深度学习 存储 算法
NumPy 与 SciPy:Python 科学计算库的比较
【8月更文挑战第30天】
130 5