发布时间:2026/9/1 5:06:01
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/9/1 5:06:01

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

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

2026/9/1 5:06:01

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

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

2026/9/1 5:06:01

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

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

2026/9/1 5:21:02

单片机毕设选题推荐:基于 STM32 或 51 单片机的红外无线多路电气控制模块设计 基于 STM32 或 51 单片机的现成遥控器解码显示控制系统设计(021005)

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

2026/9/1 5:21:02

AS5600磁编码器IIC读取详解:从选型到滤波标定的完整实践

简介:AS5600磁编码器获取角度(IIC方式)的简单应用,是一份面向嵌入式初学者的STM32实战资料。它演示了如何通过IIC通信读取磁编码器的绝对角度,并区分正转与反转,适用于电机转速测量、云台角度反馈、机器人关…

2026/9/1 5:21:02

单片机毕设选题推荐:基于 STM32 或 51 单片机的种植环境阈值报警与执行机构控制系统设计 基于 STM32 或 51 单片机的温湿度光照一体化智能调节装置设计(020605)

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

2026/9/1 5:21:02

SC7A20H加速度传感器点击检测:双击/三击驱动开发全攻略

简介:面向STM32平台开发者,提供基于I2C接口的SC7A20H加速度传感器双击/三击检测驱动程序,解决移动设备、交互系统中手势识别的快速响应问题。资源共5个文件,包含3个C源文件和2个头文件,压缩包仅7KB,涵盖驱动…

2026/9/1 5:16:02

基于STM32与RFID的嵌入式系统项目实战:从模块驱动到业务逻辑整合

如果你是一名嵌入式开发者,或者正在学习STM32,你可能已经做过不少点灯、按键、串口通信的实验。但你是否想过,如何将这些零散的知识点整合成一个真正能解决实际问题的、完整的“系统”?一个能感知、能决策、能交互的物联网终端&am…

2026/8/31 1:05:20

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/31 2:14:20

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/31 1:41:28

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…