第1-2章 数据分析流程及Numpy科学计算

第一章 数据分析流程

数据分析完整流程

数据收集→数据清洗→数据分析→数据可视化

数据分析核心三件套

Numpy
Pandas
Matplotlib

第二章 Numpy科学计算

Numpy介绍

Python 中科学计算的基础包,提供多维数组对象、各种派生对象(掩码数组和矩阵等)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变化、基本线性代数、基本统计运算、随机模拟等。
Numpy的主要功能:

  1. ndarray,一个具有矢量算数运算和复杂广播能力的快速且节省空间的多维数组
  2. 用于对整组数据进行快速运算的标准数学函数(无需编写循环)
  3. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
  4. 线性代数、随机数生成以及傅里叶变换功能
  5. 用于集成由 C、C++、Fortran等语言编写的代码的 API

ndarray

1、Numpy数组(ndarray)的核心特性
· 多维性:支持 0维(标量)、1维(向量)、2维(矩阵)更高维数组
· 同质性:所有元素类型必须一致(通过 dtype指定)
· 高效性:基于连续内存块存储,支持向量化运算
2、ndarray的属性

shape 数组的形状:行数和列数(或更高维度的尺寸) arr.shape ndim 维度数量:数组是几维的(1维、2维、3维等) arr.ndim size 总元素个数:数组中所有元素的总数 arr.size dtype 元素类型:数组中元素的类型(整数、浮点数等) arr.dtype T 转置:行变列,列变行 arr.T itemsize 单个元素占用的内存字节数 arr.itemsize nbytes 数组总内存占用量:'size*itemsize'arr.nbytes flags 内存存储方式:是否连续存储(高级优化) arr.flags

矩阵

标量05,3.14单个数字,无行列 向量1[1,2,3]只有行或者列(一维数组) 矩阵2[[1,2],[3,4]]严格的行列结构(二维表) 张量>=3[[[1,2],[3,4]]]高阶数组(如RGB图像)

3、ndarray的创建

  1. 基础构造: 适用于手动构建小规模数组或复制已有数据。
  2. 预定义形状填充: 用于快速初始化固定形状的数组 (如全 0 占位、全 1 初始化)。
  3. 基于数值范围生成: 生成数值序列,常用于模拟时间序列、坐标网格等。
  4. 特殊矩阵生成:数学运算专用 (如线性代数中的单位矩阵)。
  5. 随机数组生成: 模拟实验数据、初始化神经网络权重等场景。
  6. 高级构造方法:处理非结构化数据 (如文件、字符串) 或通过函数生成复杂数组。
基础构造/np.array()np.copy()预定义形状填充/np.zeros()np.ones()np.empty()np.full()基于数值范围生成/np.arange()np.linspace()np.logspace()特殊矩阵生成/np.eye()np.diag()随机数组生成/np.random.rand()np.random.randn()np.random.randint()高级构造方法/np.array()np.loadtxt()np.fromfunction()

4、ndarray的数据类型

bool布尔类型------------------------------------------------------------------------------int8、uint8 有符号、无符号的8位(1字节)整形 int16、uint16 有符号、无符号的16位(2字节)整形 int32、uint32 有符号、无符号的32位(4字节)整形 int64、uint64 有符号、无符号的64位(8字节)整形------------------------------------------------------------------------------float16 半精度浮点型 float32 单精度浮点型 float32 双精度浮点型------------------------------------------------------------------------------complex64 用两个32位浮点数表示的复数 complex128 用两个64位浮点数表示的复数

5、索引与切片

基本索引 通过整数索引直接访问元素。索引从0开始 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,step)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符&|

Numpy常用函数

-----------------------------------------------------------------------------------------------基本数学(执行基础的数学运算) np.sqrt(x)计算数组中每个元素的平方根 np.exp(x)计算数组中每个元素的自然指数e^x np.log(x)计算数组中每个元素的自然对数(ln(x))np.sin(x)计算数组中每个元素的正弦值(弧度制) np.abs(x)计算数组中每个元素的绝对值 np.power(a,b)计算 a^b(a 的 b 次方),a/b 可以是数组 np.round(x,n)将 x 四舍五入到 n 位小数,n省略则取整-----------------------------------------------------------------------------------------------统计(对数组进行统计分析) np.sum(x)计算数组所有元素的和 np.mean(x)计算数组的算术平均值 np.median(x)计算数组的中位数 np.std(x)计算数组的标准差(默认总体标准差) np.var(x)算数组的方差(默认总体方差) np.min(x)/np.max(x)计算数组的最小值/最大值 np.percentile(x,q)计算数组的 q 百分位数(q 取0-100-----------------------------------------------------------------------------------------------比较(数组元素的条件判断,返回布尔数组,是数据筛选的核心工具) np.greater(a,b)判断 a 中元素是否大于 b 中对应元素 np.less(a,b)判断 a 中元素是否小于 b 中对应元素 np.equal(a,b)判断 a 中元素是否等于 b 中对应元素 np.logical_and(a,b)逻辑与:a 和 b 对应元素都为True时返回Truenp.where(condition,x,y)条件满足返回 x,不满足返回 y np.select(条件,返回的结果)-----------------------------------------------------------------------------------------------去重(用于数组的去重和元素匹配判断) np.unique(x)返回数组去重后的有序数组 np.in1d(a,b)判断 a 中每个元素是否在 b 中,返回布尔数组-----------------------------------------------------------------------------------------------排序(用于数组的排序操作,注意区分 “返回新数组” 和 “原地修改”) np.sort(x)返回数组排序后的**新数组**(原数组不变) x.sort()对数组 x**原地排序**(无返回值,原数组改变) np.argsort(x)返回数组排序后元素的**原索引**数组 np.lexsort(keys)多键排序(按最后一个 key 为主键),返回索引-----------------------------------------------------------------------------------------------其他(用于数组的形状调整、拼接、分割等操作) np.concatenate((a,b))拼接多个数组(维度需一致) np.split(x,indices)将数组分割为多个子数组 np.reshape(x,shape)改变数组形状(元素总数不变) np.copy(x)复制数组(深拷贝,修改副本不影响原数组) np.isnan(x)判断数组元素是否为 NaN(缺失值)-----------------------------------------------------------------------------------------------

案例练习

''' 题目1:温度数据分析 某城市一周的最高气温(℃)为 [28, 30, 29, 31, 32, 30, 29]。 - 计算平均气温、最高气温和最低气温 - 找出气温超过 30℃ 的天数 '''importnumpyasnp tempture=np.array([28,30,29,31,32,30,29])print('平均气温为:',np.median(tempture))print('最高气温为:',np.max(tempture))print('最低气温为:',np.min(tempture))print('气温超过30的天数:',len(tempture[tempture>30]))print(np.count_nonzero(tempture>30))print(np.cumsum(np.where(tempture>30,1,0))[-1])''' 题目2:学生成绩统计 某班级5名学生的数学成绩为[85, 90, 78, 92, 88]。 - 计算成绩的平均分、中位数和标准差 - 将成绩转换为百分制(假设满分为10) '''scores=np.array([85,90,78,92,88])print('平均分为:',np.mean(scores))print('中位数为:',np.median(scores))print('标准差为:',np.std(scores))print(scores/10)''' 题目3:矩阵运算 给定矩阵 A=[[1,2],[3,4]] 和 B=[[5,6],[7,8]]- 计算A+B和A*B(逐元素乘法) - 计算A和B的矩阵乘法(点积) '''A=np.array([[1,2],[3,4]])B=np.array([[5,6],[7,8]])print(A+B)print(A*B)print(A@B)print(np.dot(A,B))''' |1 2| |5 6| |3 4| |7 8| C11 = A[1:]*B[:1] = (1 2)*(5 7) = 1*5+2*7 = 19 C12 = A[1:]*B[:2] = (1 2)*(6 8) = 1*6+2*8 = 22 '''''' 题目4:随机数据生成 生成一个(3,4)的随机整数数组,范围[0,10) - 计算每列的最大值和每行的最小值 - 将数组中的所有奇数替换为-1 '''arr=np.random.randint(0,10,(3,4))print(arr)print('每列的最大值',np.max(arr,axis=0))# axis=0列 =1行print('每行的最小值',np.min(arr,axis=1))print(np.where(arr%2==1,-1,arr))arr[arr%2==1]=-1print(arr)''' 题目5:数组变形 创建一个1到12的一维数组,并转换为(3,4)的二维数组 - 计算每行的和与每列的平均值 - 将数组展品为一维数组 '''arr=np.arange(1,13,1)print(arr)arr=np.reshape(arr,(3,4))print(arr)print(np.sum(arr,axis=1))print(np.mean(arr,axis=0))print(np.reshape(arr,(12)))''' 题目6:布尔索引 生成一个(5,5)的随机数组,范围[0,20) - 找出数组中大于10的元素 - 将所有大于10的元素替换为0 '''np.random.seed(0)arr=np.random.randint(0,20,(5,5))print(arr)print(arr[arr>10])arr[arr>10]=0print(arr)''' 题目7:统计函数应用 某公司6个月的销售额(万元)为[120,135,110,125,130,140] - 计算销售额的总和、均值和方差 - 找出销售额最高的月份和最低的月份 '''arr=np.array([120,135,110,125,130,140])print(np.sum(arr))print(np.mean(arr))print(np.var(arr))print(np.argmax(arr)+1)print(np.argmin(arr)+1)''' 题目8:数组拼接 给定A=[1,2,3]和B=[4,5,6] - 将A和B水平拼接为一个新数组 - 将A和B垂直拼接为一个新数组 '''A=np.array([1,2,3])B=np.array([4,5,6])print(np.concatenate((A,B)))print(np.reshape(np.concatenate((A,B)),(2,3)))''' 题目9:唯一值与排序 给定数组[2,1,2,3,1,4,3] - 找出数组中的唯一值并排序 - 计算每个唯一值出现的次数 '''arr=np.array([2,1,2,3,1,4,3])u_arr,counts=np.unique(arr,return_counts=True)print(u_arr)print(counts)d=[]foriinrange(len(u_arr)):d=d+[len(arr[arr==u_arr[i]])]print(d)''' 题目10:综合应用 某商店5天的销售额(万元)和成本(万元)如下: 销售额[20,25,22,30,28] 成本[15,18,16,22,20] - 计算每天的利润(销售额-成本) - 计算利润的平均值和标准差 - 找出利润最高的天数 '''sell=np.array([20,25,22,30,28])cost=np.array([15,18,16,22,20])profit=sell-costprint('每天的利润为:',profit)print('平均值',np.mean(profit))print('标准差',np.std(profit))print('利润最高的天数',len(profit[profit==np.max(profit)]))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下安装Nginx服务及systemctl方式管理nginx详情

1.安装依赖包 yum一件安装所需的依赖包 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.下载nginx压缩包 在Nginx官网下载nginx(Index of /download/),更具自己想要的版本下载相应的tar.gz包 3.创建目录 在Linux环境下创建一个安装目录…

【架构设计】Agentic AI提示工程驱动的个性化推荐系统:微服务拆分策略

Agentic AI提示工程驱动的个性化推荐系统:微服务拆分策略与实践 一、引言:为什么传统推荐系统需要"Agent化"重构? 1. 一个真实的痛点:传统推荐系统的"僵化"困境 假设你是某电商平台的用户: 你最近…

Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错

文章目录 一、问题报错二、ONLY_FULL_GROUP_BY模式 2.1、什么是ONLY_FULL_GROUP_BY?2.2、为什么要使用ONLY_FULL_GROUP_BY?2.3、查看sql_mode 三、解决方法 3.1、关闭only_full_group_by模式 3.1.1、方法一:关闭当前会话中的only_full_group…

Thinkphp和Laravel框架的西安工商学院学生请假管理系统_s4hrg6g5

目录ThinkPHP与Laravel框架的西安工商学院学生请假管理系统项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理ThinkPHP与Laravel框架的西安工商学院学生请假管理系统 该系统基于ThinkPHP或Laravel框架开发,旨在为西安工商学院提供高效的…

小迪安全2023-2024|第13天:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVND_笔记|web安全|渗透测试|网络安全_2023-2024

第13天:信息打点-Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&D_笔记 一、信息打点 00:00 1. 业务资产 03:42 1)应用类型分类 开源应用: 定义: 指能够从网上直接下载或已公开的程序源码特点: 通常发布在主流源码平台&#xff0…

Linux下启动redis

一、直接启动redis 使用这种启动方式需要一直打开窗口,不能进行其他操作,按 ctrl c可以关闭窗口。 [rootxxx ~]# cd /usr/local/redis-4.0.6/src [rootxxx src]# ./redis-server二、以后台进程形式启动redis ①设置redis.conf中daemonize为yes&#xff…

从普通产品经理到AI产品经理,你需要掌握的AI思维与核心技能:AI大模型产品经理从零基础到进阶

AI产品经理与普通产品经理的核心区别在于AI思维。人工智能产业链分为基础层、技术层和应用层。AI产品经理可分为突破型、创新型、应用型和普及型四类,需找准定位,避免常见误区。提升能力需专注目标领域,持续学习,扩大交流圈&#…

一文读懂监督、无监督、自监督与半监督学习:小白到大模型必备知识

文章系统介绍机器学习的四大范式:监督学习依赖标注数据训练模型;无监督学习挖掘数据内在特征完成任务;半监督学习结合少量标注和大量无标签数据提升性能;自监督学习通过设计辅助任务从无标签数据中生成监督信号。这些方法各有特点…

10. 同局域网内远程控制另一台电脑

目标: 两台 Windows 家庭版笔记本,在同一 Wi-Fi 下,用 RustDesk 局域网远控 ✅ 不走公网 ✅ 不依赖官方服务器 ✅ 延迟接近本地 ✅ 可扩展到自建服务器一、RustDesk 的“通信模型” 先知道 RustDesk 到底是怎么连的,否则你不知道什…

大模型开发收藏级指南:为什么资深开发者建议先跳过Dify和LangChain?

文章指出,在快速迭代的AI领域,框架往往"约束"大于"赋能"。真正掌握LLM开发应先通过Python调用原生API,以获得更高透明度、更好调试体验和更快适配新特性。建议采用渐进式开发路径:先通过原生API理解基础&…

深度学习毕设选题推荐:基于python-CNN的水果识别基于python的水果识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

由continue引发的一个debug灾难

整个代码的简化逻辑是这样的,由于continue的使用含义不清楚,导致debug了半天。这里写代码时,错误的将continue认为是else分支,什么也不干,往下继续执行。 但是这样的理解是极其错误的,continue的意思是跳过…

AI 开源知识库大战:WeKnora、RAGFlow、FastGPT、FlashRAG,谁更厉害

我看大家对目前的开源RAG知识库都挺感兴趣的,就像来对比一下目前比较流行的几个知识库,看看哪个更适合你,哪个更有钱途,哈哈。 其实真要搭过这几个知识库,就会发现:每个用到的地方,还真不一样&a…

Thinkphp和Laravel框架的网上购书图书销售商城系统网站的设计与实现_55ap4swk

目录系统设计背景技术架构功能模块性能与安全总结项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理系统设计背景 ThinkPHP和Laravel作为国内流行的PHP框架,分别以高效开发与优雅设计著称。网上购书商城系统基于两者实现,旨在…

计算机深度学习毕设实战-基于python的水果识别基于python-CNN的水果识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Vue 3 中,unmounted 生命周期钩子会在组件实例被销毁并从 DOM 中移除后调用

Vue3中unmounted钩子在组件销毁时触发,常见场景包括:v-if条件变化;动态组件切换;路由导航;v-for列表更新;父组件卸载;手动调用unmount();Teleport目标移除;组合式API停止…

校平机:金属板材的“应力整形术“

基本原理:消除内应力的力学博弈 校平机是通过塑性弯曲变形来消除金属板材内部残余应力的设备。金属在轧制、切割或热处理后,内部应力分布不均会导致宏观不平整。校平机利用多组交错排列的辊系,使板材经历多次小曲率的正反弯曲,迫…

学习收藏】零门槛上手Ollama:本地大模型部署与实战体验分享

文章详细介绍了本地大模型工具Ollama的安装与使用方法,涵盖Windows和Linux(wsl2)两种环境。作者通过实际测试体验了不同模型的功能,指出本地模型虽功能不及云端大模型,但能满足基本需求且保护隐私。Ollama还提供cloud版本,解决了本…

Linux环境下Tomcat的安装与配置详细指南

Apache Tomcat是一个广泛使用的开源Java Servlet容器和Web服务器,适用于运行Java Web应用程序。本指南将详细介绍如何在Linux环境中安装和配置Tomcat,包括必要的前提条件、下载安装、配置环境变量、设置为系统服务以及基本的安全配置。 目录 前提条件安…

程序员必学!大模型产品经理入门指南(附7阶段学习路线+年薪80万转型案例)

大模型产品经理在2025年迎来黄金发展期,薪资涨幅超50%,一线城市资深年薪突破80万。相比程序员,产品经理凭借场景挖掘、资源整合和产品设计能力可直接切入。文章详解了5大核心能力模型和7阶段学习路线,从认知筑基到实战应用&#x…