我必须从两个数组中删除nan和inf值.我发现此帖有用/sf/answers/3401433591/用于删除nan.当我可以创建一个掩码去除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)
Run Code Online (Sandbox Code Playgroud)
我需要这个,以便正确地获得统计数据和图表
你可以用np.isfinite().它将返回一个布尔掩码,True其中值既不是无穷大也不是NAN.
您可以通过这种方式获得有限值:
a = np.asarray(a)
a = a[np.isfinite(a)]
Run Code Online (Sandbox Code Playgroud)
或者两个阵列在一起:
mask = np.isfinite(a) | np.isfinite(b)
a = a[mask]
b = b[mask]
Run Code Online (Sandbox Code Playgroud)