升级Intel Conda版Numpy 1.24.3后遇大量RuntimeWarning求助
问题分析与解决
这并非Numpy不再支持NaN,而是Intel Conda频道提供的Numpy 1.24.3版本与Pandas 2.2.1搭配时存在的兼容性bug。
问题原因
当数据中包含NaN时,Pandas内部调用的Numpy核心例程(如Expressions.py中的逻辑)直接使用<、>运算符与NaN进行比较。根据浮点标准,NaN与任何值的比较都会返回False,同时触发RuntimeWarning——并非NaN本身不被支持,而是该版本的Numpy未在内部处理这类比较的警告抑制。
解决方案
1. 升级Numpy版本(推荐)
升级到Numpy 1.24.6及以上版本即可修复该问题,执行以下conda命令:
conda install -c intel numpy>=1.24.6
2. 临时屏蔽警告(仅应急使用)
如果暂时无法升级版本,可以通过代码临时屏蔽这类RuntimeWarning:
import warnings warnings.filterwarnings("ignore", category=RuntimeWarning)
注意:此方法仅隐藏警告,未修复底层问题,不适合长期使用。
复现步骤
按以下操作可复现该问题:
- 更新conda:
conda update conda
- 创建并激活测试环境:
conda create -n "test_numpy" python=3.10 conda activate test_numpy
- 安装指定版本依赖:
conda install -c intel numpy==1.24.3 pandas=2.2.1
- 执行测试代码:
import pandas as pd import numpy as np df = pd.DataFrame(index=[0, 1, 2, 3]) df["A"] = [0., 1., np.NaN, 2.] print(df)
此时会触发多条RuntimeWarning。
内容的提问来源于stack exchange,提问作者Tunneller
相关产品推荐
相关产品推荐

