Numpy介绍

发布时间:2026/10/19 12:41:00

Numpy介绍 一. 什么是NumPyNumPy是Python科学计算的基础库。它是一个Python库提供了多维数组对象、各种派生对象如掩码数组和矩阵以及一系列用于数组快速操作的例程包括数学运算、逻辑运算、形状操作、排序、选择、I/O、离散傅里叶变换、基础线性代数、基础统计运算、随机模拟等等。NumPy包的核心是ndarray对象。它封装了同构数据类型的n维数组许多操作通过编译代码执行以提升性能。NumPy数组与标准Python序列之间存在几个重要区别(1) NumPy数组在创建时大小size固定不同于Python列表可以动态增长。改变ndarray的大小将创建一个新数组并删除原始数组。2NumPy数组中的所有元素必须是相同的数据类型因此在内存中占用的空间大小相同。例外情况可以创建包含Python对象包括NumPy对象的数组从而允许包含不同大小元素的数组。3NumPy数组支持对大量数据进行高级数学运算和其他类型的操作。通常与使用Python内置序列相比这类操作执行效率更高、代码量更少。4越来越多基于Python的科学和数学软件包开始使用NumPy数组尽管这些软件包通常支持Python序列输入但它们在处理之前会将此类输入转换为NumPy数组并且通常输出NumPy数组。换句话说为了有效使用当今大部分甚至可能是大多数基于Python的科学/数学软件仅仅了解如何使用Python内置序列类型是不够的——还需要了解如何使用NumPy数组。关于序列大小和速度的问题在科学计算中尤为重要。举个简单的例子考虑将一个一维序列中的每个元素与另一个等长序列中的对应元素相乘。如果数据存储在两个Python列表a和b中我们可以遍历每个元素来实现。a[2,3,4]b[4,5,6]rs[]foriinrange(len(a)):rs.append(a[i]*b[i])print(rs)这样能得出正确结果但如果 a 和 b 各自包含数百万个数字我们就要为 Python 循环的低效付出代价。我们可以通过编写 C 代码来更快地完成同样的任务for(i0;irows;i){c[i]a[i]*b[i];}这省去了解释 Python 代码和操作 Python 对象所涉及的所有开销但代价是失去了用 Python 编码所带来的便利性。此外编码工作量会随着数据维度的增加而增加。在 NumPy 中当你在 ndarray多维数组上进行操作时默认就是“逐元素操作”element-wise。这意味着你可以像操作普通标量数字一样直接用 、-、*、/ 对整个数组进行运算而不需要像 Python 原生列表那样写循环。然而这种看似简单的逐元素操作并不是真的在 Python 里“慢吞吞”地逐个遍历而是由预编译好的 C 代码在底层飞速执行的。一句话总结纯 C 虽快但代码繁琐维度越高越难写纯 Python 虽简洁但循环慢数据量一大就扛不住而 NumPy 用 Python 的简洁语法调用了 C 的速度——写起来像 Python跑起来像 C。优势说明语法简洁逐元素操作是默认模式一行代码完成批量计算如 c a b执行高效底层由预编译的 C 代码执行速度接近 C 语言书写便捷保留 Python 的编码便利性无需显式编写循环两大底层支柱向量化Vectorization对整个数组批量操作消除显式循环广播Broadcasting不同形状的数组在运算时自动扩展至兼容形状与 Python 列表的关键区别1大小固定创建后不可变2元素类型必须相同同构3运算由编译代码执行更快二. NumPy 为什么快NumPy 的高效源于两大核心机制向量化和广播1. 向量化Vectorization向量化指的是代码中没有显式的循环、索引等操作——这些工作当然还在进行只不过是在底层由优化过的、预编译的 C 代码“幕后”完成。向量化的优势优势说明更简洁易读一行代码完成批量操作而非多行循环更少 bug代码行数少出错概率自然降低贴近数学符号如 c a b 与数学公式写法几乎一致易于正确编码更加 Pythonic没有向量化代码会被低效、难读的 for 循环淹没# ❌ 没有向量化慢、啰嗦、易出错c[]foriinrange(len(a)):c.append(a[i]b[i])# ✅ 向量化快、简洁、清晰cab二、广播Broadcasting广播是指 NumPy 中逐元素操作的隐式行为。在 NumPy 中所有操作——不仅仅是算术运算还包括逻辑运算、位运算、函数运算等——都以这种逐元素的方式工作即它们都会“广播”。广播使得不同形状的数组也能进行运算只要较小的数组可以“扩展”到较大数组的形状且扩展方式明确无误。具体场景包括1相同形状的数组 → 直接逐元素运算2数组与标量 → 标量扩展到数组的每个元素3不同形状的数组 → 只要满足广播规则小数组自动扩展
延伸阅读

更多相关文章

2026/10/15 3:22:44

基于YOLOv8的杂草检测系统实战:从数据准备到部署全解析

简介:基于Python和YOLOv8的杂草检测系统源码包,面向农业智能化开发者和计算机视觉学习者,用于解决大田场景中作物与杂草的自动识别分类问题。项目基于包含2427张图像的collagefilter30originales数据集,涵盖作物和杂草两类目标&am…

2026/10/18 21:44:02

指纹浏览器与云手机如何为Web3从业者提供合规的运行环境

一、为什么链上生态参与需要独立运行环境做链上生态参与的人,迟早都会遇到一个很现实的问题:手里要打理的身份不止一个。有的是不同场景下的测试身份,有的是团队协作里分给不同人的运营身份,还有的只是单纯想把工作环境和私人环境…

2026/10/18 19:53:27

技术成长类学习课程专享,拿捏提能力,补充学基础~~

干货来袭,资料转存收藏「2025最新版软件测试学习路线图」,点击链接或复制整段内容,打开「夸克APP」即可获取。 祄七诶诶诶并诶玄让北目汢 /~61c83aXRf8~:/ 链接:https://pan.quark.cn/s/a1d3b8b8d200「2025最新出品黑科技工具箱」…

2026/10/19 20:32:48

kubeadm离线安装Kubernetes集群:镜像准备与常见故障排查

最近有个朋友问我,能不能在不折腾网络的前提下,用 kubeadm 装一个指定版本的 Kubernetes 集群。他试过几次 kubeadm init ,每次都在拉取 registry.k8s.io 这一步超时,要么就是预检阶段卡了几分钟直接报错。这个问题在受网络限…

2026/10/19 20:32:48

深度学习放射组学预测乳腺癌腋窝淋巴结状态

1. 项目概述:这不是“AI看片”,而是把影像里肉眼看不见的纹理变成临床决策依据“Day 15. Deep learning radiomics can predict axillary lymph node status in early-stage breast cancer”——这个标题乍看像某份科研日志的随手记录,但背后…

2026/10/19 20:32:48

企业级AI Agent落地:数据、流程与人,才是真正的瓶颈

落地企业级AI Agent一年,最颠覆我认知的一点是:模型能力从来不是真正的瓶颈。 去年年初,我们团队接到一个任务——在某制造集团内部落地企业级AI Agent,覆盖客服问答、供应链协同、内部知识检索几个方向。立项时团队吵得最凶的是…

2026/10/19 20:32:48

Claude Code 编程工作流:从自然语言到高效代码的 AI 搭档

最近这段时间,我在几个项目的开发里大量使用了 Claude Code 这套编程工作流。说句实话,用过之后再看以前的编码习惯,多少有点回不去了。它不是那种锦上添花的效率小工具,而是直接改变了你和代码之间的交互方式:过去你坐…

2026/10/19 20:32:48

纯Win32+GDI实现的C++俄罗斯方块实战工程

简介:这是一份面向C初学者与图形界面实践者的俄罗斯方块小游戏完整开源项目,聚焦于Windows平台下的MFC框架开发,适用于算法逻辑理解、GUI事件响应及内存绘图(CMyMemDC)等核心技能训练。资源共27个文件,包含…

2026/10/19 20:27:44

不装SDK,用curl和Python标准库裸调大模型API实战

1. 为什么我要绕开 SDK 直接裸调 API1.1 一个真实的需求场景前段时间接手一个内部工具项目,需要把某个模型服务平台的能力集成到已有的数据处理流水线里。官方文档给的是 Python SDK 方案,装包、初始化客户端、调用方法,三步走看起来挺省事。…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑