Numpy
使用 Python 进行科学计算的基础包
NumPy 1.26.0 发布
2023-09-16
强大的 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 的 API 是编写库以利用创新硬件、创建专用数组类型或添加 NumPy 提供之外的功能的起点。

    数组库能力和应用领域
    达斯克达斯克用于分析的分布式阵列和高级并行性,可实现大规模性能。
    吡啶亚铜吡啶亚铜与 NumPy 兼容的数组库,用于使用 Python 进行 GPU 加速计算。
    贾克斯贾克斯NumPy 程序的可组合转换:微分、矢量化、即时编译到 GPU/TPU。
    阵列X阵列带标签、索引的多维数组,用于高级分析和可视化。
    疏与 NumPy 兼容的稀疏数组库,与 Dask 和 SciPy 的稀疏线性代数集成。
    火炬火炬深度学习框架可加速从研究原型设计到生产部署的过程。
    TensorFlowTensorFlow用于机器学习的端到端平台,可轻松构建和部署 ML 支持的应用程序。
    MXNetMXNet深度学习框架适合灵活的研究原型设计和生产。
    箭用于柱状内存数据和分析的跨语言开发平台。
    x张量x张量具有广播和惰性计算的多维数组,用于数值分析。
    尴尬的尴尬的数组使用类似 NumPy 的习惯用法来操作类似 JSON 的数据。
    乌阵列乌阵列将API与实现解耦的Python后端系统; unumpy 提供了 NumPy API。
    张量地张量地张量学习、代数和后端可无缝使用 NumPy、MXNet、PyTorch、TensorFlow 或 CuPy。
  • Python 库图。这五个类别是“提取、转换、加载”、“数据探索”、“数据建模”、“数据评估”和“数据呈现”。

    NumPy 是丰富的数据科学图书馆生态系统的核心。典型的探索性数据科学工作流程可能如下所示:

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

    三个重叠圆圈的图。这些圆圈标记为“数学”、“计算机科学”和“领域专业知识”。在图的中间,三个圆圈重叠,是一个标记为“数据科学”的区域。
  • NumPy 构成了scikit-learnSciPy等强大机器学习库的基础。随着机器学习的增长,基于 NumPy 构建的库列表也在不断增长。TensorFlow 的深度学习功能具有广泛的应用,其中包括语音和图像识别、基于文本的应用、时间序列分析和视频检测。PyTorch是另一个深度学习库,在计算机视觉和自然语言处理领域的研究人员中很受欢迎。MXNet是另一个 AI 包,为深度学习提供蓝图和模板。

    被称为集成方法的统计技术(例如 binning、bagging、stacking 和 boosting)属于由XGBoostLightGBMCatBoost(最快的推理引擎之一)等工具实现的 ML 算法。YellowbrickEli5提供机器学习可视化。

  • 用 matplotlib 制作的流图
    ggpy制作的散点图
    用plotly制作的箱线图
    用 Altair 制作的流图
    Seaborn 制作的两种类型图的配对图,即绘图图和频率图"
    使用 PyVista 制作的 3D 体积渲染。
    用纳帕里制作的多维图像。
    用 vispy 制作的 Voronoi 图。

    NumPy 是新兴Python 可视化领域的重要组件,其中包括MatplotlibSeabornPlotlyAltairBokehHolovizVispyNapariPyVista等。

    NumPy 对大型数组的加速处理使研究人员能够可视化远远大于本机 Python 处理能力的数据集。

  • 实例探究