首页 > 其他分享 >NumPy 随机数据分布与 Seaborn 可视化详解

NumPy 随机数据分布与 Seaborn 可视化详解

时间:2024-08-31 12:55:16浏览次数:14  
标签:arr 数组 Seaborn 31 生成 数据分布 随机数 np NumPy

随机数据分布

什么是数据分布?

数据分布是指数据集中所有可能值出现的频率,并用概率来表示。它描述了数据取值的可能性。

在统计学和数据科学中,数据分布是分析数据的重要基础。

NumPy 中的随机分布

NumPy 的 random 模块提供了多种方法来生成服从不同分布的随机数。

生成离散分布随机数

choice(a, p, size):从数组 a 中随机选择元素,并根据概率 p 进行选择。 a:源数组,包含所有可能值。 p:每个值的概率数组,总和必须为 1。 size:输出数组的形状。

示例:生成 100 个随机数,其中 3 出现的概率为 0.2,5 出现的概率为 0.4,7 出现的概率为 0.3,9 出现的概率为 0.1:

import numpy as np

x = np.random.choice([3, 5, 7, 9], p=[0.2, 0.4, 0.3, 0.1], size=100)
print(x)

生成连续分布随机数

NumPy 提供了多种方法来生成服从不同连续分布的随机数,例如正态分布、均匀分布、指数分布等。

randn(size):生成服从标准正态分布的随机数。 rand(size):生成服从均匀分布的随机数。 beta(a, b, size):生成服从 Beta 分布的随机数。 gamma(shape, scale, size):生成服从 Gamma 分布的随机数。 poisson(lam, size):生成服从泊松分布的随机整数。

示例:生成 10 个服从标准正态分布的随机数:

import numpy as np

x = np.random.randn(10)
print(x)

随机排列

洗牌数组

shuffle(arr):对数组 arr 进行随机洗牌,修改原始数组。

示例:随机洗牌数组 [1, 2, 3, 4, 5]

import numpy as np
from numpy.random import shuffle

arr = np.array([1, 2, 3, 4, 5])

shuffle(arr)
print(arr)

生成数组的随机排列

permutation(arr):生成数组 arr 元素的随机排列,不修改原始数组。

示例:生成数组 [1, 2, 3, 4, 5] 的随机排列:

import numpy as np
from numpy.random import permutation

arr = np.array([1, 2, 3, 4, 5])

x = permutation(arr)
print(x)

练习

  1. 使用 choice 方法生成 200 个随机数,其中 1 出现的概率为 0.1,2 出现的概率为 0.2,3 出现的概率为 0.7。
  2. 生成 10 个服从指数分布的随机数。
  3. 对数组 [10, 20, 30, 40, 50] 进行随机洗牌。
  4. 生成数组 [6, 7, 8, 9, 10] 元素的随机排列。

解决方案

import numpy as np
from numpy.random import choice, permutation, expon

# 1. 使用 choice 方法生成随机数
random_numbers = choice([1, 2, 3], p=[0.1, 0.2, 0.7], size=200)
print(random_numbers)

# 2. 生成服从指数分布的随机数
exponential_randoms = expon(scale=1, size=10)
print(exponential_randoms)

# 3. 对数组进行随机洗牌
arr = np.array([10, 20, 30, 40, 50])
shuffle(arr)
print(arr)

# 4. 生成数组的随机排列
random_permutation = permutation([6, 7, 8, 9, 10])
print(random_permutation)

使用 Seaborn 可视化分布

简介

Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,用于创建统计图表。它提供了一系列高级绘图函数,可以轻松创建美观且信息丰富的统计图形。

安装 Seaborn

如果您已经安装了 Python 和 pip,可以使用以下命令安装 Seaborn:

pip install seaborn

如果您使用的是 Jupyter Notebook,可以使用以下命令安装 Seaborn:

!pip install seaborn

绘制分布图

分布图是一种可视化数据分布的图表。它显示了数据集中每个值的出现频率。

在 Seaborn 中,可以使用 sns.distplot() 函数绘制分布图。该函数接受以下参数:

data:要绘制分布的数据。可以是数组、列表或 Pandas 数据框。 hist:如果为 True(默认),则绘制直方图;如果为 False,则只绘制密度曲线。 kde:如果为 True(默认),则使用核密度估计 (KDE) 来估计数据的分布;如果为 False,则使用直方图。 bins:用于创建直方图的直方图数量。 norm:用于规范分布的类型。例如,norm='kde' 将使用 KDE 来规范分布。

示例:绘制正态分布

以下示例演示如何使用 Seaborn 绘制正态分布:

import seaborn as sns
import numpy as np

# 生成随机数据
data = np.random.randn(1000)

# 绘制分布图
sns.distplot(data)
plt.show()

该代码将生成 1000 个服从标准正态分布的随机数,并使用 Seaborn 绘制它们的分布图。

示例:绘制自定义分布

以下示例演示如何绘制自定义分布:

import seaborn as sns
import numpy as np

# 生成自定义数据
data = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9]

# 绘制分布图
sns.distplot(data, hist=False, kde=False)
plt.show()

该代码将生成一个包含重复值的自定义数据数组,并使用 Seaborn 绘制它们的分布图,不显示直方图或密度曲线。

练习

  1. 生成 500 个服从均匀分布的随机数,并绘制它们的分布图。
  2. 生成 1000 个服从指数分布的随机数,并绘制它们的分布图。
  3. 从以下数据中绘制分布图:
data = [23, 37, 43, 29, 31, 32, 36, 27, 31, 33, 34, 25, 27, 28, 42, 38, 27, 27, 33, 31, 26, 29, 31, 35, 33, 30, 30, 32, 36, 28, 31, 33, 38, 29, 31, 31, 34, 36, 26, 25, 26, 34, 37, 28, 36, 31, 29, 31, 27, 28, 32, 37, 30, 33, 33, 27, 31, 32, 32, 36, 25, 32, 35, 37, 37, 30, 31, 34, 33, 29, 32, 31, 36, 26, 29, 31, 37, 28, 28, 37, 31, 32, 36, 33, 27, 31, 32, 33, 32, 32, 30, 27, 36, 38, 35, 26, 32, 37, 31, 30, 33, 30, 27, 

## 最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:`Let us Coding`,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

标签:arr,数组,Seaborn,31,生成,数据分布,随机数,np,NumPy
From: https://blog.51cto.com/xiaowange/10890240

相关文章

  • 使用Python的Matplotlib和Seaborn库进行数据可视化的全面指南
    数据可视化是数据科学和分析中不可或缺的一部分,而Python中的Matplotlib和Seaborn库为用户提供了强大的工具来创建各种可视化图表。本文将介绍如何使用这两个库进行数据可视化,并提供一些实用的代码示例和解析。安装Matplotlib和Seaborn首先,确保你已经安装了Matplotlib和Seaborn库。......
  • 组合分类器基础实验——numpy实现或sklearn借口调用:袋装Bagging, 随机森林, 提升Boost
    袋装(Bagging)基本思想对原训练数据集采用随机有放回抽样的方法选择子数据集从而构造组合分类器。给定含有n个样本的数据集合D,袋装在构造指定的T个基础模型(以基分类器为例)的基本过程:对D进行采样,得到若干个大小相同子数据集Di(i=1,2,…,T),Di中可能包含重复样本(因为对每个Di采用的......
  • Python学习-[numpy库]-初级
    创建数组:np.array([1,2,3,4,5])使用zeros创建全零数组:np.zeros((3,2))代表一个三行二列的数组:array([0.,0.], [0.,0.], [0.,0.])获取数组的尺寸:a=np.zeros((3,2))a.shape#输出结果为:(3,2)第一个数据展示数组第一维的长度,第二个数据展示数......
  • Numpy库
    一、NumPy介绍在Python中,NumPy是一个开源的数值计算扩展库,用于高效地处理大型多维数组和矩阵,同时提供了大量的数学函数库进行这些数组的操作。NumPy库在科学计算,数据分析,机器学习中有广泛应用。二、安装NumPy1pipinstallnumpy2.1安装完NumPy后,你需要在Python脚本中导入......
  • 云服务器配置Yolov5环境,No module named ‘torch‘, No module named ‘numpy
    客户背景因为电脑GPU不行,所以想使用云服务器跑Yolov5,但是云服务器配置环境有冲突,需要解决;报错:Nomodulenamed'torch',Nomodulenamed'numpy阿里云配置1.阿里云资费情况2.选择系统和安装GPU启动3.选择网络速度(上行下行的速度),之后确认订单就可以了。云服务器......
  • numpy_torch_basic
    importnumpyasnpCreatearr1=np.array([1.,2.,3.])arr1array([1.,2.,3.])arr2=arr1.astype(int)arr2array([1,2,3])arr3=np.ones((3,2,1))arr3array([[[1.],[1.]],[[1.],[1.]],[[1.],[1.]]])a=......
  • C++调用Python和numpy第三方库计算MFCC音频特征实现封装发布
    目录项目简介程序/数据集下载环境准备执行步骤1.新建python虚拟环境2.虚拟环境运行下python代码3.迁移虚拟环境4.编写Cmakelists.txt5.编写C++代码6.编译项目7.测试项目简介深度学习程序的边缘部署以性能绝佳的C++为主(⊙﹏⊙),但遇到项目开发周期短,则以功能优先,一些复杂的算法和......
  • NumPy备忘录
    Pythoncallsmatrices lists,NumPycallsthem arrays andTensorFlowcallsthem tensors. Pythonrepresentsmatriceswiththe listdatatype.Call np.array tocreateaNumPyarraywithyourownhand-pickedvalues.Forexample,thefollowingcallcreate......
  • numpy梯度回传\线性回归
    1importmath2importnumpyasnp3x_train=np.array([1.0,2.0,3.0])4y_train=np.array([300.0,350.0,500])56defcompute_cost(x,y,w,b):7m=x.shape[0]8f_wb=w*x+b9cost=((f_wb-y)**2).sum()10total_co......
  • python之numpy (5 分割和复制)
    分割分割指将矩阵分割为几个小部分,以便于后续的计算需要。splitimportnumpyasnpm=np.random.random((3,3))print(m)sp=np.split(m,3,axis=0)ssp=np.split(m,3,axis=1)print(sp,ssp,sep='\n')[[0.373247510.933194940.18961048][0.814330810.377225750.00708......