《Numpy 简易速速上手小册》第4章:Numpy 数学和统计计算(2024 最新版)

在这里插入图片描述

文章目录

  • 4.1 基础统计运算
    • 4.1.1 基础知识
    • 4.1.2 完整案例:市场调研分析
    • 4.1.3 拓展案例 1:股市收益分析
    • 4.1.4 拓展案例 2:环境监测数据处理
  • 4.2 线性代数运算
    • 4.2.1 基础知识
    • 4.2.2 完整案例:解线性方程组
    • 4.2.3 拓展案例 1:特征值和特征向量
    • 4.2.4 拓展案例 2:奇异值分解(SVD)
  • 4.3 复杂数学函数
    • 4.3.1 基础知识
    • 4.3.2 完整案例:信号处理
    • 4.3.3 拓展案例 1:对数转换在数据预处理中的应用
    • 4.3.4 拓展案例 2:生成和分析正态分布数据

4.1 基础统计运算

4.1.1 基础知识

在数据分析的世界里,基础统计运算就像是探索数据的第一步。Numpy 提供了一系列强大的函数来帮助我们快速理解数据的基本特性。

  • 均值(Mean)np.mean() 用于计算数组中元素的平均值。
  • 中位数(Median)np.median() 用于找出数组中的中位数,即排序后位于中间的元素。
  • 标准差(Standard Deviation)np.std() 用于计算数据的分散程度。
  • 方差(Variance)np.var() 用于计算平方差的平均值,反映了数据的波动大小。

这些统计指标能够为我们提供数据分布的初步了解。

4.1.2 完整案例:市场调研分析

假设你进行了一个市场调研,收集了一组关于产品满意度的数据,并希望通过基础统计运算来分析这些数据。

import numpy as np

# 假设这是收集到的满意度评分,范围从 1 到 5
satisfaction_scores = np.array([3, 4, 2, 5, 4, 3, 4, 3, 3, 5, 4])

# 计算基础统计数据
mean_score = np.mean(satisfaction_scores)
median_score = np.median(satisfaction_scores)
std_deviation = np.std(satisfaction_scores)
variance = np.var(satisfaction_scores)

print("Mean Satisfaction Score:", mean_score)
print("Median Satisfaction Score:", median_score)
print("Standard Deviation:", std_deviation)
print("Variance:", variance)

在这个案例中,我们计算了满意度评分的均值、中位数、标准差和方差,这可以帮助我们了解消费者的满意度分布。

4.1.3 拓展案例 1:股市收益分析

假设你想分析一支股票的日收益率,并想了解其波动性。

# 假设这是连续 10 天的股票收益率
daily_returns = np.array([0.02, -0.01, 0.005, -0.007, 0.01, -0.03, 0.04, 0.002, -0.005, 0.003])

# 计算股票收益的基础统计数据
mean_return = np.mean(daily_returns)
median_return = np.median(daily_returns)
std_deviation_return = np.std(daily_returns)
variance_return = np.var(daily_returns)

print("Mean Daily Return:", mean_return)
print("Median Daily Return:", median_return)
print("Standard Deviation of Daily Returns:", std_deviation_return)
print("Variance of Daily Returns:", variance_return)

在这个案例中,我们通过计算日收益率的均值、中位数、标准差和方差,来评估股票的表现和波动性。

4.1.4 拓展案例 2:环境监测数据处理

设想你负责监测某个地区的空气质量,并收集了一系列关于空气污染物的数据。

# 假设这是一周内每天的 PM2.5 指数
pm25_levels = np.array([35, 42, 50, 80, 60, 65, 70])

# 计算 PM2.5 指数的基础统计数据
mean_pm25 = np.mean(pm25_levels)
median_pm25 = np.median(pm25_levels)
std_pm25 = np.std(pm25_levels)
var_pm25 = np.var(pm25_levels)

print("Mean PM2.5 Level:", mean_pm25)
print("Median PM2.5 Level:", median_pm25)
print("Standard Deviation of PM2.5 Levels:", std_pm25)
print("Variance of PM2.5 Levels:", var_pm25)

在这个案例中,我们利用了 Numpy 的统计函数来分析一周内 PM2.5 污染指数的平均水平、中位数、标准差和方差。这有助于我们理解空气质量变化的趋势和波动情况。

通过这些案例,我们可以看到 Numpy 在进行基础统计分析时的强大和便捷。无论是市场调研数据、股市收益率还是环境监测数据,Numpy 都能帮助我们快速得出有意义的统计结论,这对于任何数据分析工作都是至关重要的。

在这里插入图片描述


4.2 线性代数运算

4.2.1 基础知识

线性代数是数学中处理向量空间和线性方程组的一个分支,它在数据分析和机器学习中扮演着关键角色。Numpy 提供了一整套用于执行线性代数运算的工具,让这些复杂的数学问题变得容易处理。

  • 矩阵乘法(Matrix Multiplication)np.dot()@ 运算符用于计算两个数组的点积,是线性代数中的基本运算之一。
  • 矩阵转置(Matrix Transposition)np.transpose().T 属性用于计算矩阵的转置。
  • 矩阵求逆(Matrix Inversion)np.linalg.inv() 用于计算方阵的逆。
  • 行列式计算(Determinant Calculation)np.linalg.det() 用于计算矩阵的行列式。
  • 特征值和特征向量(Eigenvalues and Eigenvectors)np.linalg.eig() 用于计算方阵的特征值和特征向量。

这些运算是许多高级数据分析和机器学习算法的基础。

4.2.2 完整案例:解线性方程组

假设你面临一个线性方程组问题,你需要找到一组解使得这些方程满足。

import numpy as np

# 定义一个 3x3 的方阵和一个值向量
A = np.array([[2, 1, 1],
              [1, 3, 2],
              [1, 0, 0]])
B = np.array([4, 5, 6])

# 使用 Numpy 求解线性方程组
X = np.linalg.solve(A, B)

print("Solution of Linear Equations:", X)

在这个案例中,我们利用 Numpy 的 linalg.solve() 方法解决了一个由方阵 A 和向量 B 构成的线性方程组。

4.2.3 拓展案例 1:特征值和特征向量

特征值和特征向量在许多数据分析应用中非常重要,例如主成分分析(PCA)。

# 创建一个 2x2 的方阵
matrix = np.array([[4, 2],
                   [1, 3]])

# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix)

print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)

这个案例展示了如何计算方阵的特征值和特征向量,这对于理解矩阵的属性和行为非常重要。

4.2.4 拓展案例 2:奇异值分解(SVD)

奇异值分解是一种强大的矩阵分解方法,在信号处理和统计学中应用广泛。

# 创建一个 3x2 的矩阵
matrix = np.array([[1, 2],
                   [3, 4],
                   [5, 6]])

# 进行奇异值分解
U, S, V = np.linalg.svd(matrix)

print("U Matrix:\n", U)
print("Singular Values:", S)
print("V Matrix:\n", V)

在这个案例中,我们对一个矩阵进行了奇异值分解,得到了 U、S 和 V 三个矩阵。SVD 在数据压缩和降维等领域中非常有用。

通过这些案例,你可以看到 Numpy 在处理线性代数问题时的强大能力。无论是解决实际问题还是进行数据分析,线性代数运算都是一个非常宝贵的工具。掌握了这些基础知识和技巧,你将能在数据科学的道路上更进一步!

在这里插入图片描述


4.3 复杂数学函数

4.3.1 基础知识

在数据分析和科学计算中,我们经常需要超越基础数学运算,使用一些更复杂的数学函数。Numpy 提供了丰富的数学函数库,用于处理这些复杂的运算。

  • 三角函数:例如 np.sin(), np.cos(), np.tan(),这些函数在处理周期性数据时非常重要。
  • 指数和对数函数np.exp(), np.log() 等函数用于指数增长或衰减分析,对数转换等。
  • 统计分布函数:Numpy 提供了生成不同统计分布的函数,如正态分布 np.random.normal(),均匀分布 np.random.uniform()

这些复杂数学函数为分析具有特定数学特性的数据提供了强大的工具。

4.3.2 完整案例:信号处理

假设你正在处理一个周期性信号,需要应用三角函数来分析信号的特性。

import numpy as np
import matplotlib.pyplot as plt

# 生成一个周期性信号
t = np.linspace(0, 2*np.pi, 100)
signal = np.sin(t)

# 对信号应用三角函数
transformed_signal = np.cos(signal)

# 绘制原始信号和变换后的信号
plt.plot(t, signal, label='Original Signal')
plt.plot(t, transformed_signal, label='Transformed Signal')
plt.legend()
plt.show()

在这个案例中,我们首先生成了一个正弦波形的周期性信号,然后应用余弦函数进行转换,并通过绘图展示了原始信号和转换后的信号。

4.3.3 拓展案例 1:对数转换在数据预处理中的应用

对数转换是数据预处理中常见的一种方法,用于处理具有指数增长或长尾分布的数据。

# 假设这是一组呈指数增长的数据
exponential_data = np.array([1, 10, 100, 1000, 10000])

# 应用自然对数转换
log_transformed_data = np.log(exponential_data)

print("Log Transformed Data:", log_transformed_data)

在这个案例中,我们通过对数转换来平衡数据的增长速率,使其更适合进一步分析。

4.3.4 拓展案例 2:生成和分析正态分布数据

在许多实际情况中,数据被假定为符合正态分布,Numpy 可以用来生成和分析这类数据。

# 生成一个正态分布的数据集
normal_data = np.random.normal(loc=0, scale=1, size=1000)

# 计算这些数据的统计特性
mean = np.mean(normal_data)
std_dev = np.std(normal_data)

print("Mean of Normal Data:", mean)
print("Standard Deviation of Normal Data:", std_dev)

# 绘制数据的直方图
plt.hist(normal_data, bins=30, alpha=0.7)
plt.title("Histogram of Normally Distributed Data")
plt.show()

在这个案例中,我们生成了一组符合正态分布的随机数据,并计算了其均值和标准差,然后绘制了数据的直方图来可视化其分布情况。

通过这些案例,我们看到了 Numpy 在处理复杂数学函数方面的强大能力。从信号处理到数据预处理,再到统计分析,这些复杂数学工具都是解决实际问题和进行数据分析的宝贵资源。掌握它们,将为你在数据科学的旅程上增添强大的翅膀!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/361420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C Primer Plus第4章编程题

文章目录 printf()和scanf()的*修饰符C Primer Plus第4章编程题 1.printf()和scanf()的*修饰符 printf()和scanf()都可以用*修饰符来修改转换说明的含义。 printf()的*修饰符:如果你不想预先指定字段宽度,希望通过程序来指定,那么可以使用*修…

AI 神助攻,协同办公神器 ---- ONLYOFFICE

人工智能不会取代人,只会淘汰那些不会使用人工智能的人。 – 鲁迅 一、人工智能重新定义办公新模式 随着GPT的横空出世,AI的应用场景已经无处不在,从智能客服、智能语音助手、智能家居到自动驾驶汽车等,AI正在不断地拓展其应用领…

HTML+JavaScript-06

节点操作 目前对于节点操作还是有些困惑&#xff0c;只是了解简单的案例 具体操作可以看菜鸟教程&#xff1a;https://www.runoob.com/js/js-htmldom-elements.html 案例-1 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8…

考研高数(共轭根式)

1.定义 共轭根式&#xff1a;是指两个不等于零的根式A、B&#xff0c;若它们的积AB不含根式&#xff0c;则称A、B互为共轭根式。 共轭根式的一个显著特点是通过相乘能把根号去掉&#xff0c;这是很有帮助的 2.常用的共轭根式 3.例题 1&#xff09;求极限 2&#xff09;证明…

【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本)

目录 一、前言 二、pytorch简介 三、安装准备工作 3.1、下载Anaconda 四、判断是否有NVIDIA显卡 五、安装pytorch-CPU版本 六、安装pytorch-GPU版本 6.1、查看CUDA显卡驱动版本 6.2、安装CUDA 6.3、安装CuDNN&#xff08;加速器&#xff09; 6.4、安装pytorch-GPU 七…

从一个小故事讲解观察者模式~

定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 什么是观察者模式&#xff1f; 观察者模式在我们的日常生活中极其常见。 先来看看观察者模式的定义&#xff1a; 观察者模式定义了对象之间…

SV-7041T 多媒体教学广播IP网络有源音箱

SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。同时它可以外接一个30W的无源副音箱&#xff0c;用在面积较大的场所。5寸进口全频低音喇…

OCP NVME SSD规范解读-8.SMART日志要求-3

SMART-11&#xff1a;这个属性记录的是用户数据区的NAND块最大擦写次数和最小擦写次数。其中&#xff0c;字节地址95:92表示最小用户数据擦写计数&#xff0c;而字节地址91:88表示最大用户数据擦写计数。这两个数值反映了闪存芯片在使用过程中的磨损程度&#xff0c;是评估SSD剩…

springboot集成 mysql快速入门demo

一、mysql环境搭建 采用docker-compose搭建&#xff0c;配置如下&#xff1a; docker-compose.yml version: 3 services:mysql:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 # 原镜像mysql:5.7container_name: mysql_3306 …

Github 2024-01-30 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-30统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目2Jupyter Notebook项目2HTML项目1Rust项目1C项目1 稳定扩散Web UI 创建周期&…

使用企业微信一年要花费多少钱?

从今天开始&#xff0c;大力将为大家呈现一个新的话题——“企微问答”&#xff0c;大家有什么问题可以回复我们的公众号&#xff0c;如果你是严肃认真的提问&#xff0c;我们会严肃认真的给你一个答案。今日问题 &#xff1a;用企业微信一年要花多少钱 使用企业微信要花多少钱…

element-ui中的el-date-picker 页面至字显示不全的原因及解决

显示不全原因&#xff1a;.el-range-separator的宽度为5%,相对于外层的父元素不够 解决方案&#xff1a;加宽度 <style> .el-range-separator{width: 20px !important; } </style>解决图如下

基于单片机的烟草干燥温度控制系统设计

摘 要&#xff1a;烟草干燥研究一直备受国内外烟草工作者的重视&#xff0c;在烟草干燥的方法中热风管处理法是利用热空气对流使烟草达到干燥的效果&#xff0c;这样可以控制烟草干燥时的温度&#xff0c;使烟草能够更好更快地干燥&#xff0c;因此温度的检测和控制是很重要的。…

【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)

本项目基于Qt5开发&#xff0c;基于CMake进行构建&#xff0c;可以实现一套代码同时在ROS1/ROS2系统中使用(本项目已接入CI,保证多ROS版本/系统版本可用性) 项目地址&#xff1a; https://github.com/chengyangkj/Ros_Qt5_Gui_App 软件在编译时会自动识别环境变量中的ROS1/ROS…

Log4j2-13-log4j2 asyncLogger 低延迟日志的异步日志记录器

log4j2 的 async logger Log4j2 是一个 Java 日志框架&#xff0c;它提供了灵活的配置和高性能的日志记录功能。其中&#xff0c;async logger 是 Log4j2 中的一个特性&#xff0c;它允许在日志记录时使用异步方式&#xff0c;以提高性能。 1. 异步日志简介 在传统的同步日志…

linux 下gdal库(python)

之前在windows下安装gdal&#xff0c;先要下安装包再安装。这次在linux上安装&#xff0c;试了一下pip install gdal&#xff0c;不可以。想着linux应该一样&#xff0c;结果一搜网上教程一堆&#xff0c;乱七八糟的。 搞了一个小时 最后发现一句话就可以&#xff01;&#xf…

路由备份聚合排错

目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 实验拓扑图 实验要求 按照图示配…

我国个体工商户达1.24亿户,支撑近3亿人就业

官媒报道截至2023年底&#xff0c;全国登记在册个体工商户1.24亿户&#xff0c;占经营主体总量的67.4%&#xff0c;支撑近3亿人就业。 什么概念&#xff1f;我帮大家理解一下&#xff0c;2024年了&#xff0c;现在中国5个人里面就有一个人不用上班&#xff0c;而是自己当起了老…

【Cookie反爬虫】某采购网站动态Cookie加点选验证码校验分析与实战

文章目录 1. 写在前面2. 请求分析3. JS反混淆4. 深度分析 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

鸿蒙ArkUI封装的单选组件

Radio是单选框组件&#xff0c;通常用于提供相应的用户交互选择项&#xff0c;同一组的Radio中只有一个可以被选中。 ArkUI创建一个单选框&#xff0c;其中value是单选框的名称&#xff0c;group是单选框的所属群组名称。checked属性可以设置单选框的状态&#xff0c;状态分别为…