数据分析:numpy
一、简介1.1 NumPy简介NumPy(Numerical Python)是Python数据分析必不可少的第三方库。Numpy的出现一定程度上解决了Python运算性能不佳的问题同时提供了更加精确的数据类型使其具备了构造复杂数据类型的能力。本身是由C语言开发是个很基础的扩展NumPy被Python其它科学计算包作为基础包因此理解np的数据类型对NumPy重在数值计算主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵比Python自身的嵌套列表结构要高效的多.NumPy重要功能如下1.高性能科学计算和数据分析的基础包多维数组具有矢量运算能力快速、节省空间2. ndarray,3.矩阵运算无需循环可完成类似Matlab中的矢量运算4.用于读写磁盘数据的工具以及用于操作内存映射文件的工具是一个运行速度非常快的数学库主要用于数组计算。包含:一个强大的N维数组对象ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能Numpy属性NumPy的数组类被称作ndarray通常被称作数组。ndarray对象属性有:ndarray. ndim纬度几层嵌套ndarray. shape形状ndarray. size大小元素个数ndarray. dtype元素类型ndarray.itemsize1.2 PandasPandas是一个强大的分析结构化数据的工具集它的使用基础是Numpy(提供高性能的矩阵运算)用于数据挖掘和数据分析同时也提供数据清洗功能Pandas利器之 Series是一种类似于一维数组的对象Pandas利器之 DataFrame是Pandas中的一个表格型的数据结构1.3 MatplotlibMatplotlib是一个功能强大的数据可视化开源Python库。Python中使用最多的图形绘图库可以创建静态动态和交互式的图表1.4 SeabornSeaborn是一个Python数据可视化开源库。建立在matplotlib之上并集成了pandas的数据结构Seaborn通过更简洁的API来绘制信息更丰富更具吸引力的图像面向数据集的API与Pandas配合使用起来比直接使用Matplotlib更方便1.5 Sklearnscikit-learn是基于 Python 语言的机器学习工具简单高效的数据挖掘和数据分析工具可供大家在各种环境中重复使用建立在 NumPy SciPy 和 matplotlib 上二、AnacondaAnaconda 是最流行的数据分析平台全球两千多万人在使用Anaconda 附带了一大批常用数据科学包Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的可以帮助你在计算机上安装和管理数据分析相关包包含了虚拟环境管理工具conda create-n虚拟环境名字pythonpython版本号#创建虚拟环境conda activate 虚拟环境名字#进入虚拟环境conda deactivate 虚拟环境名字#退出虚拟环境conda remove-n 虚拟环境名字--all#删除虚拟环境condaenvlist#列举所有环境conda search模块#检索可安装的包的所有版本conda list模块#检查当前环境是否存安装jupyter notebook#activate后打开jupter三、APINumpy数组是一个多维的数组对象(矩阵)称为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))anp.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]arrnp.arange(0,10,2,dtypenp.int64)array()把Python列表 - ndarray对象bnp.array([6,7,8])print(数组b:,b)# [6 7 8]print(数组b类型:,type(b))# class numpy.ndarrayrand()、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]] arrnp.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]] arrnp.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]] arrnp.random.uniform(-1,5,size(3,4))# 返回具有标准正态分布的序列 [[ 0.30547271 0.31586077 -1.13650364] [-0.36588039 -0.97770015 1.24721691]] arrnp.random.randn(2,3)astype()类型转换# 范围 0~10, 步长2, 类型为int64# [0 2 4 6 8]arrnp.arange(0,10,2,dtypenp.int64)print(arr)# [0. 2. 4. 6. 8.]arr2arr.astype(np.float32)print(arr2.dtype)# float32logspace()等比数列 logspace中开始点和结束点是底数为10的幂我们让开始点为10的0次方结束点为9次方元素个数为10# [ 1. 10. 100. 1000.]anp.logspace(0,3,4)# base2 底数为2, 默认为10# 0: 表示开始为2的0次方# 3: 表示结束为2的3次方# 4: 表示个数,生成4个# 包左包右# [1. 2. 4. 8.]anp.logspace(0,3,4,base2)linspace等差数列np.linspace是用于创建一个一维数组并且是等差数列构成的一维数组它最常用的有三个参数。第一个例子用到三个参数第一个参数表示起始点第二个参数表示终止点第三个参数表示数列的个数。# 1: start 起始# 10: stop 结束# 4: num 总个数# endpoint: 默认True,右闭# [ 1. 4. 7. 10.]anp.linspace(1,10,4,endpointTrue,dtypenp.int32)基础API对数组中的每个元素进行操作。np.ceil():向上最接近的整数参数是 number 或 arraynp.floor():向下最接近的整数参数是 number 或 arraynp.rint():四舍五入参数是 number 或 arraynp.isnan():判断元素是否为 NaN(Not a Number)参数是 number 或 arraynp.multiply():元素相乘参数是 number 或 arraynp. divide():元素相除参数是 number 或 arraynp.abs():元素的绝对值参数是 number 或 arraynp. where(condition,x,y):三元运算符xif condition else yprint(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(arr0,1,-1))统计函数np.mean()np.sum():所有元素的平均值所有元素的和参数是 number 或 arraynp. max()np.min():所有元素的最大值所有元素的最小值参数是 number 或 arraynp.std()np.var ():所有元素的标准差所有元素的方差参数是 number 或 arraynp. argmax()np.argmin():最大值的下标索引值最小值的下标索引值参数是 number 或 arraynp.cumsum()np.cumprod():返回一个一维数组每个元素都是之前所有元素的 累加和 和 累乘积参数是 number或 array多维数组默认统计全部维度axis参数可以按指定轴心统计值为0则按列统计值为1则按行统计。arrnp.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,axis0))# 行: [ 6 22 38]print(np.sum(arr,axis1))去重函数np.unique():找到唯一值并返回排序结果类似于Python的set集合arrnp.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]arrnp.array([1,2,34,5])#np.sort()函数排序返回排序后的副本# [ 1 2 5 34]sortarrnp.sort(arr)# ndarray直接调用sort在原数据上进行修改# [ 1 2 5 34]arr.sort()基本运算减法、乘法(行列一致和行列不一致)。数组的算数运算是按照元素的。新的数组被创建并且被结果填充。# [20 30 40 50]anp.array([20,30,40,50])# [0 1 2 3]bnp.arange(4)# [20 29 38 47]ca-b矩阵乘法行列数一致anp.array([[1,2,3],[4,5,6]])bnp.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]] xnp.array([[1,2,3],[4,5,6]]) [[9 8] [6 5] [3 2]] ynp.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列

相关新闻

最长连续1子数组解法详解(力扣1004)

最长连续1子数组解法详解(力扣1004)

问题解析 题目要求:给定一个二进制数组 nums 和一个整数 k,你可以将最多 k 个 0 翻转为 1。请返回在执行任意次数的翻转操作后,数组中最长的连续 1子数组的长度 。 核心思路:将问题转化为寻找一个最长的子数组,使得…

2026/7/5 8:46:55阅读更多 →
Awesome ACG:二次元开发者工具合集

Awesome ACG:二次元开发者工具合集

文章目录Awesome ACG:二次元开发者工具合集Awesome ACG:二次元开发者工具合集 soruly 整理的 Awesome ACG 项目,在 GitHub 上获得了 1400 多个 Star。 这个项目收录了动漫、漫画、游戏、轻小说、视觉小说、Vocaloid 以及东方 Project 相关的…

2026/7/5 8:46:55阅读更多 →
左右双向堆叠箭头条形图:Highcharts 自定义箭头柱状插件示列代码

左右双向堆叠箭头条形图:Highcharts 自定义箭头柱状插件示列代码

本案例是依托 Highcharts 开放的事件钩子与自定义矢量路径能力,可低成本开发异形柱状插件,无需底层图形渲染开发,解决原生条形样式单一、无法直观表达 “双向作用力” 的可视化痛点。Highcharts原生兼容堆叠、正负色、数据标签、无障碍全套能…

2026/7/5 8:46:55阅读更多 →
Claude三大模型选型指南:Opus 4.7、Opus 4.6与Sonnet 4.6实战决策逻辑

Claude三大模型选型指南:Opus 4.7、Opus 4.6与Sonnet 4.6实战决策逻辑

1. 这不是“选模型”,而是给任务配一把趁手的刀 Claude三大模型怎么选?这个问题最近在技术群、产品会和AI工具测评里高频出现,但很多人一上来就陷入参数对比、benchmark排名、甚至“谁更像人类”的玄学讨论——这恰恰是踩进第一个坑。我带过7…

2026/7/5 10:02:00阅读更多 →
豆包AI vs DeepSeek:产品思维与工程思维的实战对比

豆包AI vs DeepSeek:产品思维与工程思维的实战对比

1. 项目概述:一个真实用户视角下的国产大模型体验对比 讲道理,我为什么觉得豆包比DeepSeek还好用?这句话不是标题党,也不是情绪输出,而是我在过去三个月里,每天平均调用5个以上大模型、累计完成200次实际任…

2026/7/5 10:02:00阅读更多 →
ChatGPT vs DeepPavlov:NLU工程落地的选型决策指南

ChatGPT vs DeepPavlov:NLU工程落地的选型决策指南

1. 这不是一场“谁更聪明”的表演赛,而是一次任务导向的工程实测你点开这篇文章,大概率不是想听“ChatGPT很厉害”或者“DeepPavlov很专业”这种泛泛而谈的结论。我干这行十多年,从早期用RNN做意图识别,到后来搭BERT微调流水线&am…

2026/7/5 10:02:00阅读更多 →
NLU任务选型指南:ChatGPT与DeepPavlov工程对比

NLU任务选型指南:ChatGPT与DeepPavlov工程对比

1. 这不是一场“谁更聪明”的表演赛,而是一次方法论的对照实验你点开这篇文章,大概率不是想看两个模型名字排排坐、比个分数高低。真正值得花时间琢磨的,是标题里那个被轻描淡写带过的词——Natural Language Understanding(NLU&a…

2026/7/5 10:02:00阅读更多 →
学习机不是平板:618选购必须关注教材同步与AI诊断精度

学习机不是平板:618选购必须关注教材同步与AI诊断精度

1. 为什么618买学习机不是“捡便宜”,而是“抢时间窗口”“不想踩坑,趁618大促购买学习机,有过来人推荐吗?”——这句话我每天在家长群、教育类小红书笔记和知乎问答里至少看到17次。不是夸张,是实打实的截图统计。它背…

2026/7/5 10:02:00阅读更多 →
ai模特服装模特商用解决方案实测,平台功能体验全解析

ai模特服装模特商用解决方案实测,平台功能体验全解析

在电商与内容产业中,ai模特服装模特技术正成为提升素材创新与效率的新工具。本篇将从一站式AI平台出发,评测多款图片与视频生成工具,聚焦服装模特生成、素材处理、多场景兼容能力,为商家与设计师解读核心功能与实际体验。 我将结…

2026/7/5 9:57:00阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →