NumPy 的范围#

在此,我们描述了 NumPy 开发范围内 N 维数组计算的各个方面。这不是 NumPy 应该努力的方向的展望性定义,而是描述了现状——即我们已决定至少在目前继续支持的领域。

  • 内存中,N 维,同质类型(单个指针 + 步幅)的 CPU 数组

    • 支持各种数据类型

    • 非专用硬件,例如 GPU

    • 但是,支持各种 CPU(例如 ARM,PowerX)

  • N 维数组的高级 API

    • NumPy 是 Python 中数组 API 的事实标准

    • 索引和元素的快速迭代(ufunc)

    • 与其他数据容器实现(例如 __array_ufunc__ 和 __array_function__)的互操作性协议。

  • 用于 ndarray 方法和属性的Python API 和 C API

  • 其他N 维数组的专用类型或用途

    • 掩码数组

    • 结构化数组(非正式称为记录数组)

    • 内存映射数组

  • 历史上,NumPy 包含以下支持科学计算的基本功能。我们打算继续支持(但不会扩展)目前已包含的内容。

    • 线性代数

    • 快速傅里叶变换和窗函数

    • 伪随机数生成器

    • 多项式拟合

  • NumPy 为科学 Python 生态系统中的其他包提供了一些基础设施

    • numpy.distutils(在 NumPy 2.5.0 中移除,曾提供 C++、Fortran、BLAS/LAPACK 以及其他相关科学计算库的构建支持)

    • f2py(为 Fortran 代码生成绑定)

    • 测试工具(大部分已弃用,pytest 已做得很好)

  • 速度:我们认真对待性能问题,并致力于以与原生 C 代码相似的性能执行大型数组上的操作。也就是说,在出现冲突时,维护和可移植性优先于性能。我们致力于尽可能防止回归(例如,通过 asv)。