如何检查NumPy版本?不同版本特性对比

如何检查NumPy版本及不同版本特性对比

NumPy(Numerical Python)是Python中用于科学计算的基础软件包。它提供了一个强大的N维数组对象、复杂的(广播)功能、集成C/C++和Fortran代码的工具,以及有用的线性代数、傅里叶变换和随机数生成功能。随着NumPy的不断发展,新版本会引入新特性、性能优化和错误修复。因此,了解您正在使用的NumPy版本以及不同版本之间的差异非常重要。

1. 检查NumPy版本

有多种方法可以检查您正在使用的NumPy版本。以下是其中最常用的几种:

1.1. 使用 __version__ 属性

这是最直接和推荐的方法。NumPy模块提供了一个名为 __version__ 的属性,它存储了当前安装的NumPy版本号。

```python
import numpy as np

print(np.version)
```

这段代码将打印出您当前NumPy版本的字符串表示形式,例如 "1.23.5"。

1.2. 使用 version 模块 (NumPy 1.19及更高版本)

从NumPy 1.19开始,您可以使用 version 模块来获取更详细的版本信息。

```python
import numpy as np
from numpy import version

print(version.version) # 与 np.version 相同
print(version.full_version) # 完整的版本信息,可能包括构建信息
print(version.git_revision) # Git提交哈希值(如果可用)
```

1.3. 使用命令行工具

如果您在终端或命令提示符下工作,可以使用以下命令检查NumPy版本:

  • 使用 pip

    bash
    pip show numpy

    这将显示NumPy的详细信息,包括版本号、安装位置等。

  • 使用 conda(如果您使用Anaconda或Miniconda):

    bash
    conda list numpy

    这将列出conda环境中安装的NumPy版本。

1.4. 在Jupyter Notebook或IPython中

在Jupyter Notebook或IPython交互式环境中,您可以使用以下快捷方式:

python
import numpy as np
np?

或者
python
import numpy as np
np.__version__?

这将在帮助窗格中显示NumPy的文档字符串,其中包含版本信息。

2. 不同NumPy版本特性对比

NumPy的每个版本都会带来改进和变化。以下是一些主要版本之间的特性对比:

(请注意,这并不是一个详尽的列表,只是一些重要的变化和新增功能的示例。要获取完整的更改日志,请参阅NumPy官方文档的发行说明部分。) : https://numpy.org/doc/stable/release.html

2.1. NumPy 1.26 (撰写本文时的最新稳定版)

  • Python版本支持: 仅支持Python 3.9-3.12。不再支持Python 3.8。
  • quantilepercentile等函数中的新插值方法: 引入了新的插值方法,如"lower", "higher", "midpoint", "nearest"
  • numpy.lib.recfunctions 模块的改进
  • 构建系统改进
  • 错误修复和性能优化。

2.2. NumPy 1.25

  • Python版本支持: 支持Python 3.8-3.11。
  • 更快的 argpartitionargselect
  • ndarray.realndarray.imag 现在始终是视图 (之前有些情况下是拷贝)。
  • numpy.char 中的新函数
  • 许多已弃用功能的删除。
  • 构建系统改进
  • 针对 ARM 和 PowerPC 架构的 SIMD 优化

2.3. NumPy 1.24

  • Python版本支持: 支持Python 3.8-3.11。
  • f2py 的重大改进: NumPy的Fortran接口生成器f2py得到了显著改进,支持更多Fortran特性和现代Fortran代码。
  • 新的 numpy.show_config() 函数: 显示NumPy的构建配置信息,包括使用的BLAS/LAPACK库等。
  • numpy.einsum 的优化:einsum 函数进行了进一步优化,提高了性能。
  • 弃用了一些过时的功能。

2.4. NumPy 1.23

  • Python版本支持: 支持 Python 3.8-3.10.
  • 新的 casting 关键字参数: 许多通用函数 (ufunc) 现在接受 casting 关键字参数,以更好地控制类型转换。
  • numpy.random 的改进: 随机数生成器得到了改进和增强。
  • 性能改进: 许多函数得到了优化,提高了性能。

2.5. NumPy 1.22

  • Python版本支持: 支持 Python 3.8-3.10。
  • 类型注解 (Type Hints) 的重大改进: NumPy 1.22 在类型注解方面做了大量工作,使得 NumPy 代码更容易使用静态类型检查器(如mypy)进行分析。
  • 新的 numpy.errstate 上下文管理器: 提供了一个更方便的方式来管理浮点错误处理。
  • numpy.fft 中对实数输入数组的性能改进

2.6. NumPy 1.21

  • Python版本支持: 支持 Python 3.7-3.10 (不再支持 Python 3.6)。
  • SIMD支持的扩展: 扩展了对SIMD(单指令多数据)指令的支持,以提高性能。
  • 更好的错误消息: 改进了错误消息,使其更具信息量。

2.7. NumPy 1.20

  • Python版本支持: 支持 Python 3.7-3.9 (不再支持 Python 2.7 和 3.5)。
  • 类型注解 (Type Hints) 的引入: NumPy 开始引入类型注解,以提高代码的可读性和可维护性。
  • 新的默认随机数生成器 (PCG64): 引入了一个新的默认随机数生成器,它具有更好的统计特性。 可以使用 numpy.random.default_rng() 访问。
  • NEP 18 函数 __array_function__ 协议的实现,允许 NumPy 函数被第三方数组库重写。

2.8. NumPy 1.19

  • Python版本支持: 支持 Python 3.5-3.8。
  • version模块的引入: 引入了version模块以获得更详尽版本信息。
  • numpy.einsum 的优化:einsum 函数进行了优化,提高了性能。

2.9. NumPy 1.18 及更早版本

  • NumPy 1.18 及更早版本在功能和性能上与后续版本相比有较大差异。这些版本可能不支持较新的Python版本,也没有引入后续版本中的许多优化和新特性。

3. 版本选择和兼容性注意事项

选择合适的NumPy版本时,需要考虑以下几个因素:

  • Python版本兼容性: 确保您选择的NumPy版本与您正在使用的Python版本兼容。NumPy的每个版本都有支持的Python版本范围。
  • 项目依赖: 如果您的项目依赖于其他库,请检查这些库与NumPy版本的兼容性。某些库可能需要特定版本的NumPy。
  • 性能要求: 新版本的NumPy通常会带来性能改进。如果性能对您的应用程序至关重要,请考虑使用较新的NumPy版本。
  • 新特性需求: 如果您需要使用NumPy的某些新特性,请选择包含这些特性的版本。
  • 稳定性: 较新的NumPy版本可能包含一些未发现的错误。如果您需要高度稳定的环境,请考虑使用经过充分测试的较旧版本。
  • 长期支持: 考虑使用有长期支持的版本,以获得更长时间的安全更新和错误修复。

如果升级NumPy版本遇到兼容性问题,可以考虑以下解决方案:

  • 更新依赖库: 尝试更新您的项目所依赖的其他库,以使其与新版本的NumPy兼容。
  • 使用虚拟环境: 使用虚拟环境(如venv或conda)为不同的项目创建隔离的环境,以避免NumPy版本冲突。
  • 阅读NumPy发行说明: 仔细阅读NumPy发行说明,了解版本之间的更改和潜在的兼容性问题。
  • 回退旧版本: 如果升级实在困难,可以先回退到之前使用的稳定的版本。

4. 总结

了解您正在使用的NumPy版本以及不同版本之间的差异对于编写高效、可靠和可维护的科学计算代码非常重要。本文介绍了检查NumPy版本的多种方法,并对比了一些主要版本的特性。 在选择NumPy版本时,请务必考虑Python版本兼容性、项目依赖、性能要求、新特性需求和稳定性。 通过仔细选择和管理NumPy版本,您可以充分利用NumPy的强大功能,并确保您的代码在不同环境中都能正常运行。

THE END