news 2026/7/5 8:46:31

数据分析:numpy

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据分析:numpy

一、简介

1.1 NumPy

简介

  • NumPy(Numerical Python)是Python数据分析必不可少的第三方库。
  • Numpy的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力。
  • 本身是由C语言开发,是个很基础的扩展,NumPy被Python其它科学计算包作为基础包,因此理解np的数据类型对
  • NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多.

NumPy重要功能如下

1.高性能科学计算和数据分析的基础包
多维数组,具有矢量运算能力,快速、节省空间2. ndarray,
3.矩阵运算,无需循环,可完成类似Matlab中的矢量运算
4.用于读写磁盘数据的工具以及用于操作内存映射文件的工具

是一个运行速度非常快的数学库,主要用于数组计算。包含:

  1. 一个强大的N维数组对象ndarray
  2. 广播功能函数
  3. 整合 C/C++/Fortran 代码的工具
  4. 线性代数、傅里叶变换、随机数生成等功能

Numpy属性

NumPy的数组类被称作ndarray,通常被称作数组。ndarray对象属性有:

  • ndarray. ndim:纬度,几层嵌套
  • ndarray. shape:形状
  • ndarray. size:大小,元素个数
  • ndarray. dtype:元素类型
  • ndarray.itemsize:

1.2 Pandas

  • Pandas是一个强大的分析结构化数据的工具集
  • 它的使用基础是Numpy(提供高性能的矩阵运算)
  • 用于数据挖掘和数据分析,同时也提供数据清洗功能
      1. Pandas利器之 Series,是一种类似于一维数组的对象
      1. Pandas利器之 DataFrame,是Pandas中的一个表格型的数据结构

1.3 Matplotlib

Matplotlib是一个功能强大的数据可视化开源Python库。

  1. Python中使用最多的图形绘图库
  2. 可以创建静态,动态和交互式的图表

1.4 Seaborn

Seaborn是一个Python数据可视化开源库。

  1. 建立在matplotlib之上,并集成了pandas的数据结构
  2. Seaborn通过更简洁的API来绘制信息更丰富,更具吸引力的图像
  3. 面向数据集的API,与Pandas配合使用起来比直接使用Matplotlib更方便

1.5 Sklearn

scikit-learn是基于 Python 语言的机器学习工具

  1. 简单高效的数据挖掘和数据分析工具
  2. 可供大家在各种环境中重复使用
  3. 建立在 NumPy ,SciPy 和 matplotlib 上

二、Anaconda

Anaconda 是最流行的数据分析平台,全球两千多万人在使用

  1. Anaconda 附带了一大批常用数据科学包
  2. Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的
  3. 可以帮助你在计算机上安装和管理数据分析相关包
  4. 包含了虚拟环境管理工具
conda create-n虚拟环境名字python=<python版本号>#创建虚拟环境conda activate 虚拟环境名字#进入虚拟环境conda deactivate 虚拟环境名字#退出虚拟环境conda remove-n 虚拟环境名字--all#删除虚拟环境condaenvlist#列举所有环境conda search<模块>#检索可安装的包的所有版本conda list<模块>#检查当前环境是否存安装jupyter notebook#activate后打开jupter

三、API

Numpy数组是一个多维的数组对象(矩阵),称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速
度快和节省空间的特点。注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。

arange()

类似 python 的 range(),创建一个一维 ndarrayy数组。

importnumpyasnp# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]print(np.arange(15))a=np.arange(15).reshape(3,5)print(a)''' [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] '''print("数组的纬度",a.shape)#几行几列 (3, 5)print("数组轴的个数:",a.ndim)#数组纬度,几层, 2纬数组print("数组元素类型:",a.dtype)# int64print("数组中每个元素的字节大小:",a.itemsize)# int64占用8字节print("数组元素的总个数",a.size)# 所有元素个数 15print("类型:",type(a))# <class 'numpy.ndarray'># 范围 0~10, 步长=2, 类型为int64# [0 2 4 6 8]arr=np.arange(0,10,2,dtype=np.int64)

array()

把Python列表 -> ndarray对象

b=np.array([6,7,8])print("数组b:",b)# [6 7 8]print("数组b类型:",type(b))# <class 'numpy.ndarray'>

rand()、randint()、uniform()、randn()

随机生成

# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),rand固定区间0.0 ~ 1.0''' [[0.31691335 0.90146359 0.82516704 0.46770785] [0.29621857 0.51238154 0.74082077 0.60887821] [0.67011043 0.77226119 0.21435528 0.17993468]] '''arr=np.random.rand(3,4)print(arr)print(type(arr))# <class 'numpy.ndarray'># 生成指定维度大小(3行4列)的随机多维整型数据(二维),randint()可指定区间(-1,5)''' [[ 2 1 2 4] [ 0 -1 3 0] [ 1 -1 3 1]] '''arr=np.random.randint(-1,5,size=(3,4))# 生成指定维度大小(3行4列)的随机多维小数数据(二维),randint()可指定区间(-1,5)''' [[ 2.66014273 1.47597597 3.03103291 4.66081343] [ 2.01176883 1.14651087 4.91733097 -0.85668461] [-0.25588651 1.11584233 0.56430666 2.36723165]] '''arr=np.random.uniform(-1,5,size=(3,4))# 返回具有标准正态分布的序列''' [[ 0.30547271 0.31586077 -1.13650364] [-0.36588039 -0.97770015 1.24721691]] '''arr=np.random.randn(2,3)

astype()

类型转换

# 范围 0~10, 步长=2, 类型为int64# [0 2 4 6 8]arr=np.arange(0,10,2,dtype=np.int64)print(arr)# [0. 2. 4. 6. 8.]arr2=arr.astype(np.float32)print(arr2.dtype)# float32

logspace()

等比数列 logspace中,开始点和结束点是底数为10的幂我们让开始点为10的0次方,结束点为9次方,元素个数为10

# [ 1. 10. 100. 1000.]a=np.logspace(0,3,4)# base=2 底数为2, 默认为10# 0: 表示开始为2的0次方# 3: 表示结束为2的3次方# 4: 表示个数,生成4个# 包左包右# [1. 2. 4. 8.]a=np.logspace(0,3,4,base=2)

linspace

等差数列:np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。

# 1: start 起始# 10: stop 结束# 4: num 总个数# endpoint: 默认True,右闭# [ 1. 4. 7. 10.]a=np.linspace(1,10,4,endpoint=True,dtype=np.int32)

基础API

对数组中的每个元素进行操作。

  • np.ceil():向上最接近的整数,参数是 number 或 array
  • np.floor():向下最接近的整数,参数是 number 或 array
  • np.rint():四舍五入,参数是 number 或 array
  • np.isnan():判断元素是否为 NaN(Not a Number),参数是 number 或 array
  • np.multiply():元素相乘,参数是 number 或 array
  • np. divide():元素相除,参数是 number 或 array
  • np.abs():元素的绝对值,参数是 number 或 array
  • np. where(condition,x,y):三元运算符,xif condition else y
print(np.ceil(arr))print(np.floor(arr))print(np.rint(arr))print(np.abs(arr))# 相乘:行列数必须相同,等同于 arr * arrprint(np.multiply(arr,arr))print(np.divide(arr,arr))# arr中的每个元素是否大于0print(np.where(arr>0,1,-1))

统计函数

  • np.mean(),np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
  • np. max(),np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
  • np.std(),np.var ():所有元素的标准差,所有元素的方差,参数是 number 或 array
  • np. argmax(),np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
  • np.cumsum(),np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number或 array,多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按列统计,值为1则按行统计。
arr=np.arange(12).reshape(3,4)''' [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] '''print(arr)# [ 0 1 3 6 10 15 21 28 36 45 55 66]print(np.cumsum(arr))# 累加和# 66print(np.sum(arr))# 求和# 列: [12 15 18 21]print(np.sum(arr,axis=0))# 行: [ 6 22 38]print(np.sum(arr,axis=1))

去重函数:np.unique():找到唯一值并返回排序结果,类似于Python的set集合

arr=np.array([[1,2,1],[2,3,4]])''' [[1 2 1] [2 3 4]] '''print(arr)# [1 2 3 4]print(np.unique(arr))

排序函数:np.sort() 对数组元素进行排序

# [ 1 2 34 5]arr=np.array([1,2,34,5])#np.sort()函数排序,返回排序后的副本# [ 1 2 5 34]sortarr=np.sort(arr)# ndarray直接调用sort,在原数据上进行修改# [ 1 2 5 34]arr.sort()

基本运算

减法、乘法(行列一致和行列不一致)。
数组的算数运算是按照元素的。新的数组被创建并且被结果填充。

# [20 30 40 50]a=np.array([20,30,40,50])# [0 1 2 3]b=np.arange(4)# [20 29 38 47]c=a-b

矩阵乘法:行列数一致

a=np.array([[1,2,3],[4,5,6]])b=np.array([[1,2,3],[4,5,6]])''' 相同位置的元素互相相乘。如 a[0][0] * b[0][0] = 1 * 1 = 1。 a[0][1] * b[0][1] = 2 * 2 = 4。 a[0][2] * b[0][2] = 3 * 3 = 9。 a[1][0] * b[1][0] = 4 * 4 = 16。 a[1][1] * b[1][1] = 5 * 5 = 25。 a[1][2] * b[1][2] = 6 * 6 = 36。 [[ 1 4 9] [16 25 36]] '''# 行列数要一致print(a*b)# 必须要求行列数一致print(np.multiply(a,b))

矩阵乘法:行列数不一致

''' [[1 2 3] [4 5 6]] '''x=np.array([[1,2,3],[4,5,6]])''' [[9 8] [6 5] [3 2]] '''y=np.array([[9,8],[6,5],[3,2]])''' x[0][0] * y[0][0] x[0][1] * y[1][0] x[0][2] * y[2][0] [1, 2, 3] * [9, 6, 3] = 1 * 9 + 2 * 6 + 3 * 3 = 9 + 12 + 9 = 30 [1, 2, 3] * [8, 5, 2] = 1 * 8 + 2 * 5 + 3 * 2 = 8 + 10 + 6 = 24 [4, 5, 6] * [9, 6, 3] = 4 * 9 + 5 * 6 + 6 * 3 = 36 + 30 + 18 = 84 [4, 5, 6] * [8, 5, 2] [[30 24] [84 69]] '''print(x.dot(y))#print(np.dot(x, y))print(x @ y)# 行列数不一致通过语法糖@, A列 = B行即可操作,结果是:A行B列
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 8:46:24

珐琅板介绍

珐琅板 前言:珐琅(flng),又称“搪瓷”(tngc),是通过熔融凝于基体金属上并与金属牢固结合在一起的一种无机玻璃质材料。中国古代习惯将附着在陶或瓷胎表面的称“釉”;附着在建筑瓦件上的称“琉璃”;而附着在金属表面上的则称为“珐琅”,现在有叫“珐琅釉料”。

作者头像 李华
网站建设 2026/7/5 8:46:09

SQL LIMIT原理与高并发分页优化实战

1. 项目概述&#xff1a;为什么 LIMIT 不是“加个数字”那么简单在日常 SQL 开发中&#xff0c;我见过太多人把LIMIT当成一个随手可加的装饰性语法——写完SELECT * FROM users&#xff0c;顺手补上LIMIT 10&#xff0c;就以为万事大吉。但真实场景里&#xff0c;这个看似最简单…

作者头像 李华
网站建设 2026/7/5 8:46:03

99%准确率只是起点!AI验证码识别落地反爬对抗的5个致命深坑

在技术社区里&#xff0c;你总能看到这样的教程&#xff1a;“用YOLOv8训练滑块缺口检测&#xff0c;准确率99%&#xff01;”“CNN点选验证码识别&#xff0c;3行代码搞定&#xff01;”模型指标光鲜亮丽&#xff0c;仿佛接入API就能畅通无阻。 但当你把这套方案部署到真实采集…

作者头像 李华
网站建设 2026/7/5 8:44:47

2026免费PPT转PDF在线转换渠道全指南,国内可用且无需下载

2026 年日常办公、学生课业里&#xff0c;PPT 转 PDF 是高频操作&#xff0c;导出 PDF 可以固定版式、避免设备打开乱排版&#xff0c;方便线上分享、打印与线上提交材料。很多用户在寻找无需安装客户端、免费可用、导出无水印、文件传输具备安全保障的在线转换渠道&#xff0c…

作者头像 李华
网站建设 2026/7/5 8:42:39

GEO技术服务企业选择指南

随着生成式引擎优化&#xff08;GEO&#xff09;在2024-2025年间快速崛起&#xff0c;越来越多的企业开始认识到&#xff0c;在豆包、文心一言、DeepSeek等主流大模型中建立品牌知识图谱的重要性。与传统SEO单纯追求网页排名不同&#xff0c;GEO更关注AI对品牌信息的“推荐意愿…

作者头像 李华
网站建设 2026/7/5 8:42:20

用过才知道,市面上正规的鱼缸公司实际体验怎么样?

家人们&#xff0c;我之前一直想在家里弄个鱼缸&#xff0c;养几条漂亮的鱼&#xff0c;让家里多些生机。可买鱼缸这事儿&#xff0c;真的没我想得那么简单。市面上鱼缸公司那么多&#xff0c;质量参差不齐&#xff0c;我踩过不少坑。像我之前买的那个鱼缸&#xff0c;过滤系统…

作者头像 李华