Python RuntimeWarning: invalid value encountered in double_scalars 处理

Cora
Cora
发布时间:2026-10-12| 6人浏览过
原创

本文解析Python中RuntimeWarning: invalid value encountered in double_scalars警告的成因,指出其多由numpy浮点数除以零引发,而非标准ZeroDivisionError。通过判断分母是否为零并重新赋值id_col,可有效解决该警告,确保代码在计算皮尔森相关系数时稳定运行。

RuntimeWarning: invalid value encountered in double_scalars

在编写计算皮尔森相关系数的代码时遇到了此问题

具体表现如下面的警告信息:

RuntimeWarning: invalid value encountered in double_scalars

相关的代码片段如下所示

上述提示出现在以下语句的执行过程中

id_col=(t_fa*id_part).sum()/(item_squre_rating[id]*item_squre_rating[col])

首先需要明确几点关键信息

  • 这是一个警告(warning)而非错误(Error)。因此,当代码运行中出现该提示时,程序仍可继续正常执行。同时,由于它不属于异常,使用 try-except 结构无法捕获该问题。
  • 出现此提示通常是因为发生了除以零的情况。然而,当分母为零时,并未触发标准的 ZeroDivisionError(除零异常),这一现象较为特殊。
  • 解决方法:利用 if-else 语句判断分母是否为零,若为零则重新对 id_col 进行赋值。

接下来简要分析 ZeroDivisionError 异常与 RuntimeWarning 警告的区别,以及触发这两类提示的具体条件。

  • 当分母为零且数据类型为Python内置数据类型时,会触发 ZeroDivisionError 异常。

  • 当分母为零且数据类型为 numpy 中的数据类型时,则触发 RuntimeWarning 警告。

  • 当内置数据类型与 numpy 数据类型进行混合计算时,最终结果的类型遵循 numpy 的计算类型规则。

我的代码中出现 RuntimeWarning 提示,是因为分子部分的计算结果为 numpy.float64 类型。在计算式中,分子部分也被转换为了 numpy.float64 类型,因此即使除以零也不会抛出标准错误,而是生成警告。

总结

以上为个人经验分享,希望能为大家提供参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。