【Numpy数据处理】数组基本操作-生成随机数组

549 阅读4分钟

我正在参与掘金创作者训练营第6期,点击了解活动详情

1. 生成随机数组

生成随机数组所用到的模块为:np.random模块

下面我们将主要介绍两种方式,正态分布与

1.1 正态分布

什么是正态分布呢?

  • 正态分布是一种概率分布,正态分布是具有两个参数μμσσ的连续型随机变量的分布,第一参数μμ是服从正态分布的随机变量的均值,第二个参数σσ是此随机变量的标准差,所以正态分布记作N(μ,σ)N(μ, σ)
  • 从图像的角度直观来讲,可以简单理解为 μμ 是决定正态分布那个驼峰的位置(在左侧还是在右侧),σσ 决定分布图形的胖瘦或者高低(幅度)。
  • 方差就是标准差 σ2σ²,用来衡量一组数据离散程度。

常见的正态分布应用:

  • 生活中大家的收入符合正态分布
  • 生活中人的身高符合正态分布
  • 当然,生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述

1.2 Numpy库中正态分布创建方式

  • 方法1:np.random.randn(d0, d1, …, dn)

    • 从标准正态分布中返回一个或多个样本值
    • d0, d1……对应的是维度的变化
  • 方法2:np.random.normal(loc=0.0, scale=1.0, size=None)

    • loc:float,代表此概率分布的均值
    • scale:float,代表此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
    • size:int 或者 turple of ints,表示输出的shape(几行几列?),默认为None,只输出一个值。
    • 主要用到此方式来生成标准正态分布
  • 方法3:np.random.standard_normal(size=None)

    • 返回指定形式的标准正态分布的数组
    • 直接生成标准正态分布

2. 案例演示

2.1 案例需求-创建正态分布

下面我们将完成一个生成随机数组的小demo。

案例要求:生成均值为2.0,标准差为1.5的正态分布数据,并且生成10000个数组。并且绘制条形图像观察分布情况。

代码演示如下所示:plt.hist函数是用来绘制直方图。我们为其传入了两个参数:数据X1与组数1000。

import numpy as np
import matplotlib.pyplot as plt

# 生成正态分布的随机数
X1 = np.random.normal(2, 1.5, 10000)

# 画图看分布状况
# 1. 创建画布
plt.figure(figsize=(20, 10), dpi=100)

# 2. 绘制直方图
plt.hist(X1, 1000)  # 数据X1,组数:1000

# 3. 显示图像
plt.show()

2.2 运行结果-创建正态分布

运行结果如下图所示:因为我们数组标准差设置为2,运行结果图中大概可以看出生成图像分布的中心为2。因为我们设置的组数为1000(也就是将数据分了1000个小范围),所以在图像中总共有1000个条形,纵坐标表示每组对应的数据数量。

image.png

2.3 案例需求-创建均匀分布

均匀分布与正态分布创建方式类似,使用的函数为:np.random.uniform(low=0.0, hight=1.0, size=None)

  • 该函数的能够从一个均匀分布[low, hight)中随机采样,注意该定义域区间为左开右闭的。
    • low表示均匀分布采样下界
    • hight表示均匀分布采样上界
    • size表示输出样本数目

案例需求:我们想要在-1到1均匀分布区间内,生成10000个数据,并且使用条形图展示生成结果。

import numpy as np
import matplotlib.pyplot as plt

# 生成均匀分布的随机数
X2 = np.random.uniform(-1, 1, 10000)  # 下界,上界,size数量

# 画图看分布状况
# 1. 创建画布
plt.figure(figsize=(20, 10), dpi=100)

# 2. 绘制直方图
plt.hist(X2, 1000)  # 数据X1,组数:1000

# 3. 显示图像
plt.show()

2.4 运行结果

代码运行结果如下所示:绘制出如下的条形图,条形图共有1000个区间,纵坐标表示的是每个区间生成的均匀分布数据数量。

image.png