Python NumPy 简介

NumPy(Numerical Python 的缩写)是 Python 中最基础、也是最重要的科学计算库之一。通过 NumPy,Python 可以高效地处理 多维数组(数组与矩阵),并提供大量用于 数值计算、线性代数、统计分析和科学计算 的工具。NumPy 是整个 Python 科学计算生态(如 SciPy、Pandas、Matplotlib、Scikit-learn、PyTorch 等)的基础库之一。本文将对 NumPy 进行一个简要而系统的介绍。

1、NumPy简介

NumPy 是一个用于 高效处理数组和矩阵数据 的 Python 库。

它的核心对象是 ndarray(N-dimensional array,多维数组),可以用于表示:

  • 一维数组(向量)

  • 二维数组(矩阵)

  • 多维数组(高维数据)

除了数组结构本身,NumPy 还提供了丰富的功能,包括但不限于:

  • 线性代数运算(矩阵乘法、特征值、行列式等)

  • 傅里叶变换(FFT)

  • 随机数生成

  • 统计计算

  • 广播机制(Broadcasting)

NumPy 最早由 Travis Oliphant2005 年 创建,是一个 开源项目,可以免费使用。

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,由全球社区共同维护和不断演进。

推荐阅读
cjavapy编程之路首页