NumPy 简介



NumPy 简介

NumPy 是一个 Python 包。它代表“Numerical Python”。它是一个包含多维数组对象和用于数组处理的例程集合的库。

Numeric,NumPy 的祖先,由 Jim Hugunin 开发。另一个包 Numarray 也得到了开发,它具有一些额外的功能。2005 年,Travis Oliphant 通过将 Numarray 的特性整合到 Numeric 包中创建了 NumPy 包。许多人参与了这个开源项目。

使用 NumPy 进行的操作

使用 NumPy,开发人员可以执行以下操作:

  • 数组上的数学和逻辑运算。

  • 傅里叶变换和用于形状操作的例程。

  • 与线性代数相关的运算。NumPy 内置了线性代数和随机数生成函数。

NumPy – MATLAB 的替代品

NumPy 通常与 SciPy(科学 Python)和 Matplotlib(绘图库)等包结合使用。这种组合被广泛用作 MATLAB 的替代品,MATLAB 是一个流行的技术计算平台。然而,Python 的 MATLAB 替代方案现在被视为一种更现代、更完整的编程语言。

NumPy 的一个重要优势在于它是开源的,任何人都可以免费使用它。

为什么 NumPy 比列表更快?

NumPy 数组比 Python 列表快得多,原因如下:

方面 NumPy 列表
内存存储 NumPy 使用连续的内存块,这提高了缓存效率和访问速度。 Python 列表包含指向对象的指针,导致更多的内存碎片和更慢的访问速度。
数据类型 NumPy 支持同类数据类型(所有元素都是相同类型),从而提高了内存使用效率。 Python 列表可以包含异类数据类型(元素可以是不同类型),导致更高的内存开销。
运算 NumPy 使用向量运算,利用 SIMD(单指令多数据)进行并行处理。 Python 列表依赖于基于循环的运算,由于 Python 解释性质的开销,这些运算速度较慢。
效率 NumPy是用C语言编写的,并且针对性能进行了优化,减少了数值运算的执行时间。 Python 列表作为 Python 字节码执行,通常比编译后的 C 代码慢。
内存使用 由于固定数据类型和连续存储,NumPy 需要更少的内存。 Python 列表使用更多的内存,因为每个元素都是一个单独的 Python 对象,并有额外的开销。
广播 NumPy 支持广播,允许对不同形状的数组进行运算,而无需创建额外的副本。 Python 列表不支持广播,使得逐元素运算效率较低。
性能 由于连续内存存储,更好的缓存利用率,从而导致更快的访问和处理速度。 由于内存分配分散,缓存利用率差,导致访问速度变慢。
功能 NumPy 提供了一套丰富的数学函数和工具,这些函数和工具针对数组运算进行了优化。 Python 列表仅限于基本操作,缺乏高级数学功能。

NumPy是用什么语言编写的?

NumPy 主要用以下语言编写:

  • C:NumPy 的核心功能,包括数组对象和基本运算的实现,是用 C 语言编写的。这提供了 NumPy 闻名的卓越性能和效率。

  • Python:NumPy 的用户界面和高级功能是用 Python 编写的。这使得它易于使用并与其他 Python 库集成。

  • Fortran:NumPy 中的一些数值例程,特别是与线性代数相关的例程(如 LAPACK 和 BLAS),是用 Fortran 编写的。Fortran 以其在数值计算方面的效率而闻名,这增强了 NumPy 在特定类型操作中的性能。

广告