FEATURED · 精选文章

Numpy介绍

发布时间 / 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不同形状的数组 → 只要满足广播规则小数组自动扩展
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻