python - 为数组中的 nan 和 inf 值创建掩码
问题描述
我必须从两个数组中删除 nan 和 inf 值。我发现这篇文章对删除 nan 很有用https://stackoverflow.com/a/48591908/7541421。当我可以创建一个掩码来删除 nan 和 inf 值时,是否有任何类似的解决方案?
下面的示例只是说明性的,我有大尺寸的数组(400 个元素)
import numpy as np
from numpy import nan, inf
a = np.asarray([0.5, 6.2, np.nan, 4.5, np.inf])
b = np.asarray([np.inf, np.inf, 0.3, np.nan, 0.5])
bad = ~np.logical_or(np.isnan(a), np.isnan(b))
X = np.compress(bad, a)
Y = np.compress(bad, b)
BIAS = np.nanmean(X - Y)
RMSE = np.sqrt(np.nanmean((X - Y)**2))
CORR = np.corrcoef(X, Y)
我需要这个才能正确获得统计数据和绘图
解决方案
您可以使用np.isfinite()
. 它将返回一个布尔掩码,其中True
的值既不是无限的也不是 NAN。
您可以通过以下方式获得有限值:
a = np.asarray(a)
a = a[np.isfinite(a)]
或者对于两个数组一起:
mask = np.isfinite(a) | np.isfinite(b)
a = a[mask]
b = b[mask]
推荐阅读
- python - 你能在 jupyterlab 中交互式地编辑普通的 .py 脚本吗?
- python - 仅从 tox 命令捕获版本
- vba - VBA Excel MACRO-Destination:=RANGE 活动单元格而不是“命名”范围
- python - 在 PyQt5 GUI 中使用 Dash (plot.ly)
- javascript - 如何自定义此 HTML 文档脚本以使其循环?
- javascript - 刷新一个jsp/网页
- c# - NGINX 反向代理背后的 ASP.NET MVC
- php - PHP Simple Post - Post 参数为空
- angular - 我可以在本地安装@angular/cli@4.2.2 而不在全局降级最新的@angular/cli@6.2.0 版本吗?
- firebase - Firebase database().ref() 不存在的路径