news 2026/6/14 5:27:21

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第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)]))
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:30:00

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

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

作者头像 李华
网站建设 2026/6/3 9:17:31

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

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

作者头像 李华
网站建设 2026/6/11 8:37:28

学长亲荐8个AI论文平台,专科生轻松搞定毕业论文!

学长亲荐8个AI论文平台,专科生轻松搞定毕业论文! 论文写作的“隐形助手”:AI 工具如何改变你的学习方式 在当今这个信息爆炸的时代,学术写作早已不再是传统意义上的“手写创作”,而是借助 AI 技术实现高效、精准的表达…

作者头像 李华
网站建设 2026/6/11 8:33:32

Linux下PostgreSQL-12.0安装部署详细步骤

一、安装环境 postgresql-12.0 CentOS-7.6 注意:确认linux系统可以正常连接网络,因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址:PostgreSQL: File Browser 选择要安装的版本进行下载: 三、安装依赖包 在要安…

作者头像 李华
网站建设 2026/6/10 20:34:01

一文读懂RAG知识库系统:原理、演进与落地全步骤(附实操代码)

在探索AI落地应用的过程中,RAG知识库系统是一项无法回避的关键技术。近期我开始系统学习这一领域,并决定以笔记形式持续记录和分享学习心得,一方面督促自己深入理解,另一方面也希望能与大家共同探讨、相互启发。 本文整理自我对RA…

作者头像 李华
网站建设 2026/6/10 15:31:29

Linux 下安装 Golang环境

Linux 下安装 Golang 获取Golang下载地址 安装 进入终端,登入root来到应用安装目录使用 wget 下载解压文件配置环境变量查看golang版本,测试是否配置成功GO设置代理环境变量 本篇教程 以 centos7 为环境基础 不使用软件包管理器安装,原因&…

作者头像 李华