Skip to content

在数组中定位NaN和Inf值

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/locating-nan-and-inf-values-in-an-array

22982 为本文评分:

5.0

在数组中定位NaN和Inf值

匿名作者 2013年4月11日,星期四

(由于我正在2013年NOAA卫星会议上学习大量知识,本周的帖子比较简短!) 无处不在的 WHERE 函数可用于快速定位数组中的值。然而,你不能直接搜索IEEE NaN(非数字)和 Inf(无穷大)值的位置;为此,你需要使用 FINITE 函数。这里有一个例子。从一个简单的数组开始:



IDL> a = findgen(5, 2)

IDL> print, a

     0.000000      1.00000      2.00000      3.00000      4.00000

      5.00000      6.00000      7.00000      8.00000      9.00000

并在最多三个随机位置添加NaN值:



IDL> i = floor(randomu(seed, 3)*n_elements(a))

IDL> a[i] = !values.f_nan

IDL> print, a

     0.000000      1.00000      2.00000      3.00000          NaN

          NaN      6.00000      7.00000          NaN      9.00000

好的,那么NaN值在哪里呢?通过肉眼观察,我可以看到它们的位置(索引4、5和8),但要通过编程方式识别它们,请将WHERE与FINITE以及"~"(逻辑非运算符)一起使用:



IDL> i_nan = where(~finite(a), /null)

IDL> print, i_nan

           4           5           8

检查完毕!

新陆地卫星的首张图像看起来很棒 看到的不仅仅是表面