图解数据分析(9) | Numpy - 与1维数组操作(数据科学家入门·完结)

Python数据分析 | Numpy与1维数组操作 Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-detail/142 声明:版权所有,转载请联系平台与作者并注明出处 n维数 阅读详情

ShowMeAI研究中心


在这里插入图片描述

n维数组是NumPy的核心概念,大部分数据的操作都是基于n维数组完成的。本系列内容覆盖到1维数组操作、2维数组操作、3维数组操作方法,本篇讲解Numpy与1维数组操作。

一、向量初始化

可以通过Python列表创建NumPy数组。

如图中(a),将列表元素转化为一维数组。注意,这里一般会确保列表元素类型相同,否则默认dtype=’object',会影响后续运算,甚至产生语法错误。

由于在数组末尾没有预留空间以快速添加新元素,NumPy数组无法像Python列表那样增长。因此,通常的处理方式包括:

  • 在变长Python列表中准备好数据,然后将其转换为NumPy数组
  • 使用 np.zeros 或 np.empty 预先分配必要的空间(图中b)

通过图中(c)方法,可以创建一个与某一变量形状一致的空数组。

不止是空数组,通过上述方法还可以将数组填充为特定值:

在NumPy中,还可以通过单调序列初始化数组:

如果我们需要浮点数组,可以使用 arange(3).astype(float) 这样的操作更改arange输出的类型,也可以在参数端使用浮点数,比如 arange(4.) 来生产浮点数Numpy数组。
以下是arange浮点类型数据可能出现的一些问题及解决方案:

图中,0.1对我们来说是一个有限的十进制数,但对计算机而言,它是一个二进制无穷小数,必须四舍五入为一个近似值。因此,将小数作为arange的步长可能导致一些错误。可以通过以下两种方式避免如上错误:

  • 使间隔末尾落入非整数步数,但这会降低可读性和可维护性;
  • 使用linspace,这样可以避免四舍五入的错误影响,并始终生成要求数量的元素。
    • 使用linspace时尤其需要注意最后一个的数量参数设置,由于它计算点数量,而不是间隔数量,因此上图中数量参数是11,而不是10。

随机数组的生成方法如下:

二、向量索引

NumPy可以使用非常直接的方式对数组数据进行访问:

图中,除“fancy indexing”外,其他所有索引方法本质上都是views:它们并不存储数据,如果原数组在被索引后发生更改,则会反映出原始数组中的更改。

上述所有这些方法都可以改变原始数组,即允许通过分配新值改变原数组的内容。这导致无法通过切片来复制数组。如下是python列表和NumPy数组的对比:

NumPy数组支持通过布尔索引获取数据,结合各种逻辑运算符可以有很高级的数据选择方式,这在Python列表中是不具备的:

注意,不可以使用3 <= a <= 5这样的Python“三元”比较。

如上所述,布尔索引是可写的。如下图 np.where 和 np.clip 两个专有函数。

三、向量操作

NumPy支持快速计算,向量运算操作接近C++速度级别,并不受Python循环本身计算慢的限制。NumPy允许像普通数字一样操作整个数组:

在python中,a//b表示a div b(除法的商),x**n表示 xⁿ

浮点数的计算也是如此,NumPy能够将标量广播到数组:

Numpy提供了许多数学函数来处理矢量:

向量点乘(内积)和叉乘(外积、向量积)如下:

NumPy也提供了如下三角函数运算:

数组整体进行四舍五入:

floor向上取整,ceil向下取整,round四舍五入

np.around 与 np.round 是等效的,这样做只是为了避免 from numpy import * 时与Python around的冲突(但一般的使用方式是import numpy as np)。当然,你也可以使用a.round()。

NumPy还可以实现以下功能:

以上功能都存在相应的nan-resistant变体:例如nansum,nanmax等

在NumPy中,排序函数功能有所阉割:

对于一维数组,可以通过反转结果来解决reversed函数缺失的不足,但在2维数组中该问题变得棘手。

四、查找向量中的元素

NumPy数组并没有Python列表中的索引方法,索引数据的对比如下:

index()中的方括号表示 j 或 i&j 可以省略

  • 可以通过 np.where(a==x)[0] [0]查找元素,但这种方法很不pythonic,哪怕需要查找的项在数组开头,该方法也需要遍历整个数组。
  • 使用Numba实现加速查找,next((i[0] for i, v in np.ndenumerate(a) if v==x), -1),在最坏的情况下,它的速度要比where慢。
  • 如果数组是排好序的,使用v = np.searchsorted(a, x); return v if a[v]==x else -1时间复杂度为O(log N),但在这之前,排序的时间复杂度为O(N log N)。

实际上,通过C实现加速搜索并不是困难,问题是浮点数据比较。

五、浮点数比较

np.allclose(a, b)用于容忍误差之内的浮点数比较。

  • np.allclose假定所有比较数字的尺度为1。如果在纳秒级别上,则需要将默认atol参数除以1e9:np.allclose(1e-9,2e-9, atol=1e-17)==False。
  • math.isclose不对要比较的数字做任何假设,而是需要用户提供一个合理的abs_tol值(np.allclose默认的atol值1e-8足以满足小数位数为1的浮点数比较,即math.isclose(0.1+0.2–0.3, abs_tol=1e-8)==True。

此外,对于绝队偏差和相对偏差,np.allclose依然存在一些问题。例如,对于某些值a、b, allclose(a,b)!=allclose(b,a),而在math.isclose中则不存在这些问题。查看GitHub上的浮点数据指南和相应的NumPy问题了解更多信息。

一键运行所有代码

图解数据分析系列 配套的所有代码,可前往ShowMeAI 官方 GitHub,下载后即可在本地 Python 环境中运行。能访问 Google 的宝宝也可以直接借助 Google Colab一键运行与交互学习!

下载数据分析速查表

Awesome cheatsheets | ShowMeAI速查表大全 系列包含『编程语言』『AI技能知识』『数据科学工具库』『AI垂直领域工具库』四个板块,追平到工具库当前最新版本,并跑通了所有代码。点击 官网 或 GitHub 获取~

👇 数据分析相关速查表(部分):

内容速查表(部分)Github代码
Python 3速查表Python 3速查表一键运行速查表代码 - Python
Numpy 速查表Numpy 速查表一键运行速查表代码 - Numpy
Pandas 速查表Pandas 速查表一键运行速查表代码 - Pandas
Matplotlib 速查表Matplotlib 速查表一键运行速查表代码 - Matplotlib
Seaborn 速查表Seaborn 速查表一键运行速查表代码 - Seaborn

拓展参考资料

ShowMeAI图解数据分析系列推荐(数据科学家入门)

ShowMeAI系列教程精选推荐

使用Python创建一维数组 在本文中,我们介绍了使用Python创建一维数组的几种方法。通过这些方法,我们可以方便地创建并操作一维数组,满足不同的编程需求。希望本文对你有所帮助!在Python中,我们可以使用各种方法创建一维数组。NumPy是Python中广泛使用的数值计算库,它提供了强大的数组操作功能。Python的列表是一种灵活的数据结构,可以容纳不同类型的元素。通过上述代码,我们可以使用不同的方法创建一维数组,并通过打印数组验证其内容。Python中提供了一些内置的数组生成器,可以方便地创建一维数组。,我们可以看到数组的内容。 阅读详情

相关推荐

数据结构-第一期——数组(Python)

数据结构——数组(Python版)

荷叶田田的博客 4423

Python学习numpy(一维数组)保姆级别教学

Numpy软件库提供了对于数组进行高速处理的ndarray类。生成ndarray类的方法之一是使用Numpy的np.array()函数,使用np.array(列表)语句,通过传入的列表创建ndarray实例。同时也可以使用np.arrange()函数 ###实例一:创建一维ndarray类 import numpy as np eg1=np.array([1,2,3]) #输出一维数组[1,2,3] eg2=np.arange(4) #输出0到3的一维数组 eg11=[1,2,3] #创建列表e

ldy__cwx的博客 6266

【NumPy科学计算】高性能数组操作核心指南

性能瓶颈:Python原生列表处理百万级数据耗时超过10秒功能缺失:缺乏高效的矩阵运算和广播机制内存浪费:列表存储数值类型存在类型装箱(Boxing)开销多维数组ndarray数据结构实现C级别性能向量化运算:避免显式循环,提升10-100倍速度生态基础:Pandas/Scikit-learn等库的底层依赖高维数据处理:超过5维可读性下降动态类型限制:不如Python列表灵活。

赶紧的博客 1335

机器学习算法入门与编程实践

机器学习算法入门与编程实践

qq_56694838的博客 5664

机器学习(三) ----------线性回归算法(梯度下降+正则化)

线性回归算法在机器学习中具有核心地位,它以其简单性和直观性为基础,为理解数据间的关系提供了基本框架。作为许多复杂算法的基础,线性回归不仅用于预测目标变量,还用于解释自变量对目标的影响。同时,它也是机器学习入门的经典算法,对于推广机器学习知识和技术具有重要意义。

2301_77539454的博客 1869

一次渗透测试引发的Json格式下CSRF攻击的探索

一次渗透测试引发的Json格式下CSRF攻击的探索

weixin_52501704的博客 1050

图解数据分析(10) | Numpy - 与2维数组操作(数据科学家入门·完结)

n维数组是NumPy的核心概念,大部分数据的操作都是基于n维数组完成的。本系列内容覆盖到1维数组操作、2维数组操作、3维数组操作方法,本篇讲解Numpy与2维数组操作——向量初始化、矩阵操作等。......

ShowMeAI研究中心 1万+

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 246

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

n维数组是NumPy的核心概念,大部分数据的操作都是基于n维数组完成的。本系列内容覆盖到1维数组操作、2维数组操作、3维数组操作方法,本篇讲解Numpy与3维、更高维数组的操作。

ShowMeAI研究中心 1万+

保姆级教程:用Seurat 5.0.1搞定单细胞测序数据从质控到细胞注释的全流程

本文提供了一份详细的Seurat 5.0.1单细胞测序数据分析教程,涵盖从数据质控到细胞注释的全流程。通过R代码示例和可视化分析,帮助用户掌握单细胞RNA测序数据处理的核心技术,包括数据标准化、降维聚类和细胞类型注释,适用于生物信息学研究和临床数据分析。

weixin_29067143的博客 201

k8s篇之underlay网络和overlay区别

underlay和overlay

小橙子的笔记屋 2144

图解数据分析(8) | Numpy - 统计与数据科学计算工具库介绍(数据科学家入门·完结)

n维数组是NumPy的核心概念,大部分数据的操作都是基于n维数组完成的。本系列内容覆盖到1维数组操作、2维数组操作、3维数组操作方法,本篇为系列导入文章,讲解数组的特点、与列表的对比等。......

ShowMeAI研究中心 1万+

YOLO26涨点改进 | 独家创新,特殊场景检测篇 | TGRS 2025 | 引入FAENet特征自适应增强网络,专注于恶劣天气条件下的目标检测(低光场景、雾天场景、雨雪场景、复杂环境等)即插即用

🔥本文提出了一种名为FAENet的特征自适应增强网络,可有效提升YOLO26在恶劣天气条件下的目标检测性能。FAENet通过拉普拉斯金字塔分解思想,将输入特征分为低频和高频两部分进行针对性增强:低频分支强化全局轮廓,高频分支增强边缘纹理细节。该模块设计轻量、可端到端训练,在不改变原始图像分布的前提下,显著缓解雾霾、低照度等复杂环境造成的特征退化问题。实验表明,该方法在多个恶劣天气数据集上超越了当前最优检测器,同时保持了轻量级和高速度特性。

Ai缝合怪、助力小伙伴高效发论文 336

图解数据分析(13) | Pandas - 核心操作函数大全(数据科学家入门·完结)

本篇为pandas系列的导语,对『Pandas核心操作函数』进行介绍,讲解Pandas进行数据操作和处理的核心数据结构:Series、DataFrame和Index。

ShowMeAI研究中心 1万+

软考「系统规划与管理师(第2版)」通关全攻略(2026年下半年)

它考的是一个IT管理者能不能用体系化的语言,把"我们为什么要建这个系统→怎么规划→怎么管好服务→怎么合规"讲圆。所以备考的核心策略也很明确——教材建框架 → 真题磨考点 → 案例练结构 → 论文备好真实项目素材 → 机考练打字。按计划走,不贪全、不盲刷、不死背,稳稳把三科都推过45分那条线。祝你通关 🎯。

软件行业技术文化交流。 3053

ubuntu:E: 无法定位软件包yum解决方法

如果出现以下问题,则需要更新yum源 yum源位于/etc/apt/sources.list yum源更新的网站有 清华大学开源镜像 中科大开源镜像 1.此处更新yum源的时候先备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sources.list 将更新源替换成上面符合版本系列号 我用的版本号为20.04 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

码农研究僧的博客 1万+

图解数据分析(12) | Pandas - 数据分析工具库介绍(数据科学家入门·完结)

Pandas是Python中最常用到的数据操作和分析工具包,它构建在Numpy之上,具备简洁的使用接口和高效的处理效率。数据科学、机器学习AI应用过程,涉及数据清洗和分析的操作也频繁使用Pandas。

ShowMeAI研究中心 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

图解数据分析(16) | 数据可视化原则与方法(数据科学家入门·完结)

数据可视化是以图示或图形格式表示的数据,以更直观方式理解与分析数据。本篇内容,我们给大家介绍数据分析中关于可视化的一些核心知识,包括:各类图形及特点,不同图形选择方法。

ShowMeAI研究中心 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

图解数据分析(7) | 数据分析工具地图(数据科学家入门·完结)

基于数据分析目前良好的发展前景,各界也出现了许多好用的功能种类丰富的数据分析工具。本文列举其中的一些常用工具:Python、R、SQL、SAS、Tableau、Excel等。

ShowMeAI研究中心 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

图解NumPy,这是理解数组最形象的一份教程了

来源 : 机器之心本文用可视化的方式介绍了 NumPy 的功能和使用示例。NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作...

Oner.wv的专栏 159

python numpy 数组转置_数组转置_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...

购买本课程所在专题《Python数据分析师:0基础到数据分析达人》https://edu.51cto.com/topic/2570.html,赠送一本“Python相关图书”。详细情况请见博客通过本课程学习您可以学习到NumPy库如下知识:第1章 NumPy简介:NumPy是什么?第2章 环境搭建:安装NumPy等库、安装Anaconda、开发工具(IPython shell、Jupyter No...

weixin_30074763的博客 107

Python数据分析基础:Numpy与Matplotlib核心原理与实战应用

多维数组是科学计算中的基础数据结构,Numpy通过连续内存存储和向量化操作实现了高效的数值计算,其广播机制允许不同形状数组进行数学运算,极大提升了数据处理性能。数据可视化作为数据分析的关键环节,Matplotlib提供了灵活的图表定制能力,支持从基础线图到复杂3D图表的创建。在Python数据科学生态中,Numpy的ndarray和Matplotlib的可视化组件构成了底层技术基石,为高级框架如pandas和scikit-learn提供支撑。实际应用中,Numpy的高效数组操作结合Matplotlib的专业

congji3817的博客 405

python中认识数据分析

📋 数据分析完整流程一个标准的 Python 数据分析项目遵循以下 6 个核心阶段数据获取CSV · API · 数据库数据清洗缺失值 · 异常值探索分析EDA · 统计描述数据可视化图表 · 仪表盘建模分析ML · 统计模型报告输出结论 · 洞察。

belong_my_offer的博客 5474

整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了...

大家好,我是老表,Python终身学习者,也是开源学习组织Datawhale终身成员,有近两年的Python编程学习经验,热爱爬虫与数据分析,目前是一名数据分析师(实习)。从18年5月起...

简说Python的博客 6884

python基础学习_整理了开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面...

大家好,今天给大家介绍一位Python终身学习者:老表,Python终身学习者,也是开源学习组织Datawhale终身成员,有近两年的Python编程学习经验,热爱爬虫与数据分析,目前是一名数据分析师(实习)。从18年5月起他将自己从0入门Python,爬虫,数据分析等各方面的学习笔记全部分享到了我的公众号上了,目前已经发表了120+篇原创技术文章,带动了3w+的学习者,本文中他整理了从...

weixin_39602615的博客 1451

python基础学习_整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了...

大家好,我是老表,Python终身学习者,也是开源学习组织Datawhale终身成员,有近两年的Python编程学习经验,热爱爬虫与数据分析,目前是一名数据分析师(实习)。从18年5月起我将自己从0入门Python,爬虫,数据分析等各方面的学习笔记全部分享到了我的公众号上了,目前已经发表了120+篇原创技术文章,带动了3w+的学习者,本文我整理了从开始分享到今天这近一年半的时间内我所分享...

weixin_39574388的博客 1672
上一篇: 图解数据分析(8) | Numpy - 统计与数据科学计算工具库介绍(数据科学家入门·完结)
下一篇: 图解数据分析(10) | Numpy - 与2维数组操作(数据科学家入门·完结)
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值