NumPy
Python 科学计算的基础软件包
NumPy 2.1 发布!
2024-08-18
强大的 N 维数组
NumPy 的矢量化、索引和广播概念快速且通用,是当今数组计算的事实标准。
数值计算工具
NumPy 提供全面的数学函数、随机数生成器、线性代数例程、傅里叶变换等。
开源
NumPy 在自由的 BSD 许可证 下分发,由充满活力、响应迅速且多元化的 社区GitHub 上公开开发和维护
互操作性
NumPy 支持各种硬件和计算平台,并与分布式、GPU 和稀疏数组库良好配合。
高性能
NumPy 的核心是经过良好优化的 C 代码。享受 Python 的灵活性和编译代码的速度。
易于使用
NumPy 的高级语法使其易于访问,并提高了来自任何背景或经验水平的程序员的生产力。
尝试 NumPy

使用交互式 shell 在浏览器中尝试 NumPy

"""
To try the examples in the browser:
1. Type code in the input cell and press
   Shift + Enter to execute
2. Or copy paste the code, and click on
   the "Run" button in the toolbar
"""

# The standard way to import NumPy:
import numpy as np

# Create a 2-D array, set every second element in
# some rows and find max per row:

x = np.arange(15, dtype=np.int64).reshape(3, 5)
x[1:, ::2] = -99
x
# array([[  0,   1,   2,   3,   4],
#        [-99,   6, -99,   8, -99],
#        [-99,  11, -99,  13, -99]])

x.max(axis=1)
# array([ 4,  8, 13])

# Generate normally distributed random numbers:
rng = np.random.default_rng()
samples = rng.normal(size=2500)
samples

生态系统

几乎每个使用 Python 的科学家都依赖于 NumPy 的强大功能。

NumPy 将 C 和 Fortran 等语言的计算能力带到了 Python,这是一种更容易学习和使用的语言。这种能力带来了简洁性:NumPy 中的解决方案通常清晰而优雅。

当编写库以利用创新硬件、创建专门的数组类型或添加 NumPy 提供的功能之外的功能时,NumPy 的 API 是起点。

数组库功能与应用领域
DaskDask用于分析的分布式数组和高级并行性,实现大规模性能。
CuPyCuPy与 NumPy 兼容的数组库,用于使用 Python 进行 GPU 加速计算。
JAXJAXNumPy 程序的可组合转换:微分、矢量化、即时编译到 GPU/TPU。
xarrayXarray用于高级分析和可视化的带标签、索引的多维数组。
sparse稀疏与 NumPy 兼容的稀疏数组库,与 Dask 和 SciPy 的稀疏线性代数集成。
PyTorchPyTorch深度学习框架,可加速从研究原型到生产部署的路径。
TensorFlowTensorFlow一个端到端的机器学习平台,可以轻松构建和部署基于 ML 的应用程序。
arrowArrow用于列式内存中数据和分析的跨语言开发平台。
xtensorxtensor具有广播和延迟计算的多维数组,用于数值分析。
awkwardAwkward Array使用类似 NumPy 的习惯用法操作类似 JSON 的数据。
uarrayuarray将 API 与实现分离的 Python 后端系统;unumpy 提供 NumPy API。
tensorlytensorly张量学习、代数和后端,以无缝使用 NumPy、PyTorch、TensorFlow 或 CuPy。
Diagram of Python Libraries. The five catagories are 'Extract, Transform, Load', 'Data Exploration', 'Data Modeling', 'Data Evaluation' and 'Data Presentation'.

NumPy 位于丰富的数据科学库生态系统的核心。典型的数据科学探索工作流程可能如下所示

对于大量数据,DaskRay 旨在扩展。稳定的部署依赖于数据版本控制 (DVC)、实验跟踪 (MLFlow) 和工作流自动化 (AirflowDagsterPrefect)。

Diagram of three overlapping circles. The circles are labeled 'Mathematics', 'Computer Science' and 'Domain Expertise'. In the middle of the diagram, which has the three circles overlapping it, is an area labeled 'Data Science'.

NumPy 是强大的机器学习库(如 scikit-learnSciPy)的基础。随着机器学习的发展,构建在 NumPy 之上的库列表也在不断增长。TensorFlow 的深度学习功能具有广泛的应用,其中包括语音和图像识别、基于文本的应用程序、时间序列分析和视频检测。PyTorch 是另一个深度学习库,在计算机视觉和自然语言处理研究人员中很受欢迎。

称为 集成 方法的统计技术(如分箱、装袋、堆叠和提升)是工具(如 XGBoostLightGBMCatBoost(最快的推理引擎之一))实现的 ML 算法中的一部分。YellowbrickEli5 提供机器学习可视化。

A streamplot made in matplotlib
A scatter-plot graph made in ggpy
A box-plot made in plotly
A streamgraph made in altair
A pairplot of two types of graph, a plot-graph and a frequency graph made in seaborn"
A 3D volume rendering made in PyVista.
A multi-dimensionan image made in napari.
A Voronoi diagram made in vispy.

NumPy 是蓬勃发展的 Python 可视化领域 中的重要组成部分,其中包括 MatplotlibSeabornPlotlyAltairBokehHolovizVispyNapariPyVista,仅举几例。

NumPy 对大型数组的加速处理使研究人员能够可视化比原生 Python 处理能力大得多的数据集。

案例研究