1、NumPy简介
NumPy 是一个用于 高效处理数组和矩阵数据 的 Python 库。
它的核心对象是 ndarray(N-dimensional array,多维数组),可以用于表示:
一维数组(向量)
二维数组(矩阵)
多维数组(高维数据)
除了数组结构本身,NumPy 还提供了丰富的功能,包括但不限于:
线性代数运算(矩阵乘法、特征值、行列式等)
傅里叶变换(FFT)
随机数生成
统计计算
广播机制(Broadcasting)
NumPy 最早由 Travis Oliphant 于 2005 年 创建,是一个 开源项目,可以免费使用。
NumPy = Numerical Python(数值计算的 Python)
2、使用NumPy的原因
在 Python 中,我们已经有了 list(列表)来存储数据,那么为什么还需要 NumPy 呢?
主要原因有以下几点:
1)Python 列表在数值计算中效率较低
Python 的列表是为通用数据结构设计的
列表中的元素可以是不同类型
每个元素都是独立的对象,内存开销大,计算速度慢
2)NumPy 提供了高性能的数组对象
NumPy 的数组(
ndarray)是 同类型元素数据在内存中 连续存储
底层使用 C / C++ 实现,性能极高
在大量数值运算中,NumPy 的速度通常是 Python 列表的几十倍,甚至上百倍。
3)NumPy 是数据科学的基础
数组运算在以下领域中非常常见:
数据科学
机器学习
深度学习
科学计算
图像处理
金融计算
在这些场景下,计算速度和内存效率至关重要。
数据科学:
是计算机科学的一个分支,研究如何高效地 存储、处理、分析数据,并从中提取有价值的信息。
3、NumPy 为什么比 Python 的 list 快
NumPy 性能优势的核心原因主要有以下几点:
1)连续内存存储
NumPy 数组的数据在内存中是 连续存放的
CPU 可以顺序、高效地读取数据
而 Python 列表:
存储的是对象引用
实际数据分散在内存各处
2)引用的局部性(Locality of Reference)
连续内存访问符合 CPU 缓存的工作方式,在计算机体系结构中,这种特性被称为:
引用的局部性
这使得 NumPy 在批量计算时非常高效。
3)底层 C 实现 + 向量化运算
NumPy 的核心计算在 C/C++ 层完成
避免了 Python 的循环开销
支持 向量化(Vectorization) 运算
这也是 NumPy 能充分利用现代 CPU 架构(SIMD、多核)的原因之一。
4、NumPy的语言编写语言
NumPy 是一个 Python 库,但并不仅仅用 Python 编写。
接口层:主要使用 Python
核心计算部分:使用 C 和 C++
少量使用 Fortran(用于高性能数值计算)
这种设计使 NumPy 同时具备:
Python 的易用性
C/C++ 的高性能
5、NumPy代码库存放位置
NumPy 是一个开源项目,源码托管在 GitHub 上:
🔗 NumPy GitHub 地址
https://github.com/numpy/numpy
关于 GitHub
GitHub 是一个代码托管平台,可以让全球开发者:
协同开发
维护开源项目
提交和审核代码
跟踪问题和版本更新
NumPy 正是通过 GitHub,由全球社区共同维护和不断演进。