NumPy 是面向 Python 的科学计算基础包,核心围绕多维数组与数组计算展开。它把 C 和 Fortran 的计算能力带入更易学习和使用的 Python,并通过向量化、索引和广播提供数组编程方式。NumPy 不仅提供数学计算本身,还位于 Python 数据科学、机器学习和可视化生态的核心位置,可与分布式、GPU 及稀疏数组库协同使用。其核心采用经过优化的 C 代码,在保留 Python 灵活性的同时使用编译代码的速度;项目以 BSD 许可证发布,并在 GitHub 上由社区公开开发和维护。
核心功能
多维数组与数组操作
NumPy 提供 N 维数组,并将向量化、索引和广播作为数组计算的重要概念。示例中使用 np.arange 创建数值序列,再通过 reshape 将其调整为二维数组;随后使用切片索引选中部分元素并赋值。数组可以调用 max(axis=1),按指定轴计算每一行的最大值,输出对应的数组结果。
数学与数值计算工具
NumPy 提供全面的数学函数,用于支持科学计算中的数值处理。官网明确列出随机数生成器、线性代数例程和傅里叶变换等能力,此外还提供更多数学计算工具。随机数示例使用 np.random.default_rng() 创建随机数生成器,并通过 normal(size=2500) 生成包含 2500 个样本的正态分布随机数。
Python、C 与 Fortran 的计算衔接
NumPy 将 C 和 Fortran 的计算能力带入 Python,使 Python 程序能够使用面向数组的数值计算方式。项目说明指出,NumPy 的解决方案通常清晰而简洁,同时核心采用优化的 C 代码。因此,使用者可以通过 Python 的高层语法组织计算,并利用编译代码完成核心处理。
多平台与专用数组库互操作
NumPy 支持广泛的硬件和计算平台,并可与分布式数组、GPU 数组及稀疏数组库协作。官网列举了 Dask 的分布式数组与并行分析、CuPy 的 GPU 加速数组、JAX 的自动微分与即时编译、Xarray 的带标签多维数组,以及 Sparse 的稀疏数组能力。NumPy 的 API 也被描述为其他库利用创新硬件、创建专用数组类型或扩展功能时的起点。
数据科学、机器学习与可视化生态基础
NumPy 位于丰富的数据科学库生态的核心。典型工作流可以使用 Pandas、Intake 或 PyJanitor 完成数据提取与转换,使用 Jupyter、Seaborn、Matplotlib 或 Altair 做探索性分析,再使用 scikit-learn、statsmodels、PyMC 或 spaCy 进行建模和评估,并通过 Dash、Panel 或 Voila 输出仪表盘。官网还指出,NumPy 是 scikit-learn、SciPy 等机器学习库的基础,并支持 Python 可视化生态处理规模大于原生 Python 能够处理的数据集。
使用方式
NumPy 的官网提供浏览器中的交互式 Shell,可直接尝试示例代码。使用者可以在输入单元格中输入代码并按 Shift + Enter 执行,也可以粘贴代码后点击 Run;示例采用 import numpy as np 导入 NumPy。正文没有说明是否需要注册、是否需要自备模型 Key、是否提供命令行或独立客户端,也没有给出专门的导入导出流程。
适用人群与场景
对使用 Python 进行科学计算的程序员,NumPy 可用于多维数组处理、数学函数调用、随机数生成、线性代数和傅里叶变换。数据科学工作者可以把它用于探索性分析、建模评估和大数据集可视化流程,并与 Pandas、Jupyter、Matplotlib 等库配合。机器学习研究者可以在 scikit-learn、SciPy、PyTorch 或 TensorFlow 等生态中使用 NumPy 作为数组计算基础。量子计算、统计计算、信号处理、图像处理、天文学、生物信息学、化学和地理科学等领域也都出现在 NumPy 官网展示的生态范围内。
注意事项
NumPy 是一个需要在 Python 环境中使用的计算包,官网正文没有说明其是否提供独立的非 Python 使用方式。它支持多种硬件与平台,但不同扩展库的能力各不相同:例如 Dask 面向分布式数组,CuPy 面向 GPU 加速,Sparse 面向稀疏数组。官网仅明确说明项目以 BSD 许可证发布,没有提供价格、免费额度或付费档位信息。