python - 即使数据类型在逻辑上正确,也无法检测列表中的 nan 值
问题描述
我在使用 pytorch 从自定义数据集创建的列表中调用了列表。
In [1]: sample[1][1]
Out[1]: [0.7, nan, nan, nan, nan]
我想检查列表中是否有 nan 值。我试过了
In [2]: np.nan in sample[1][1]
Out[2]: False
但它返回一个 False 输出。检查其中一个元素,我发现:
In [3]: sample[1][1][4] == np.nan
Out[3]: False
据说,它一定是真的,因为检查它的类型会提示我:
In [4]: type(sample[1][1][4])
Out[4]: numpy.float64
需要帮助看看我哪里出错了。我希望该列表返回 True,因为它包含一个 nan。任何线索都会有所帮助
解决方案
您想为此使用np.isnan,如您在此处看到的:
In [5]: np.nan==np.nan
Out[5]: False
In [6]: np.isnan(np.nan)
Out[6]: True
原因有点深奥,但重点是使用 np.isnan 进行测试。对于您的特定情况,您可以这样做
any([np.isnan(i) for i in sample[1][1]])
推荐阅读
- arrays - Perl用拼接背靠背删除相同的值
- python - 我无法理解 keras 中 Imagedatagenerator 的工作原理
- javascript - 使用 dropzone 和使用 FormValidation 插件的其他表单字段上传多个文件
- class - 如何解释 ArcMap 上的类概率结果?
- python-3.x - AWS Lambda 函数未检测到外部 Python 库
- date - 我们如何使用 datepicker 通过 vee-validate V4 库更改日期格式
- reactjs - 请我需要帮助,我是 react-native-reanimated 的新手,我遇到以下错误
- python-3.x - 在 Nginx Unit 之后,我们还需要像 Uvicorn、Hypercorn、Daphne 等 ASGI 吗?
- python - python中的sqlite3 INSERT INTO查询,字符串格式
- excel - 如何根据二进制值(Excel)从矩阵中列出行标题?