为数组中的nan和inf值创建一个掩码

PEB*_*KAC 4 python numpy nan

我必须从两个数组中删除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)

我需要这个,以便正确地获得统计数据和图表

Joh*_*nck 9

你可以用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)


YSe*_*elf 3

np.isfinite

按元素测试有限性(不是无穷大或不是数字)。