使用numpy.vectorize结合uncertainties为何触发无效值警告?
问题描述
环境
- Python 3.10
- numpy 1.23.5
- uncertainties 3.1.7(Linux Fedora 37系统,conda-forge包)
复现代码
import numpy as np from uncertainties.core import Variable x = np.array([1.0, 2.0]) y = np.array([np.nan, np.nan], dtype=float) func = np.vectorize(lambda x, y: Variable(x, y), otypes=[object]) func(x, y)
触发的警告
/lib/python3.10/site-packages/numpy/lib/function_base.py:2411: RuntimeWarning: invalid value encountered in <lambda> (vectorized) outputs = ufunc(*inputs)
相关现象
- 启用
warnings.simplefilter("error")后可获取完整回溯信息 - 将输入
y改为有限浮点数时,不会触发警告 - 使用自定义Variable类替代uncertainties的Variable类时,无警告
- 直接通过列表推导式调用
Variable(x[i], y[i])也无异常
疑问
numpy为何会触发该警告?该警告来自pdb无法调试的编译代码,且uncertainties的Variable类逻辑与自定义类无明显差异。实际场景中使用uncertainties.unumpy.uarray时遇到此问题,其内部实现类似示例中numpy.vectorize的用法。
内容的提问来源于stack exchange,提问作者ws_e_c421
相关产品推荐
相关产品推荐

