python - 如何在包含字符串的 numpy ndarray 中检查 NaN
问题描述
通常我可以使用 numpy.isnan() 检查 NaN:
import numpy as np
arr1 = np.array([[1, 2], [3, 4], [np.nan, 5]])
print(type(arr1))
print(np.isnan(arr1))
<class 'numpy.ndarray'>
[[False False]
[False False]
[ True False]]
但是对于包含字符串的数组,我怎样才能达到同样的效果呢?
arr2 = np.array([[1, 2], [3, 4], [np.nan, 5], ['high', 'low']])
print(type(arr2))
print(np.isnan(arr2))
<class 'numpy.ndarray'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-4a4a4bc72076> in <module>
1 array = np.array([[1, 2], [3, 4], [np.nan, 5], ['high', 'low']])
2 print(type(array))
----> 3 print(np.isnan(array))
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
解决方案
正如评论者所建议的,在数组中包含字符串导致所有元素都被默默地强制转换为字符串,包括现在为“nan”的 np.nan 值,可以通过 arr2==nan 找到:
print(arr1=='nan')
[[False False]
[False False]
[ True False]
[False False]]
推荐阅读
- sql - 查找源 S1 和 S2 之间 table1 行数的差异并更新 table2
- scrapy - scrapy 卡在调试中:Telnet 控制台正在侦听 127.0.0.1
- php - PHP - 作曲家自动加载 - 找不到类
- cluster-computing - SGE(Sun Grid Engine)如何监控作业的 VMEM(虚拟内存)使用情况?
- javascript - JavaScript 中对象数组的长度
- html - Wrapper 没有完全显示在页脚中
- python - Python - 如何防止变量在循环期间丢失?
- python - 具有代理模型按日期排序的 QFileDialog 实际上使用日期的字母顺序
- sql - 我不明白为什么我的 group by 失败了
- javascript - 如何使用 Js 代码更改一些 html 文本?