相当于numpy.C/ c++中的nan_to_num

Equivalent of numpy.nan_to_num in C/C++

本文关键字:nan to num 中的 c++ numpy 相当于      更新时间:2023-10-16

如何在C/c++中实现与numpy的numpy.nan_to_num函数等效的行为?

非python程序员规范:

将nan替换为零,将inf替换为有限数。

返回一个数组或标量,用零替换非数字(NaN)。(正)无穷大和负无穷大一个非常小(或负)的数字. ...NaN被0和∞(-∞)被最大的(最小的或适合输出类型的最负的浮点值。

我最终使用了这个,因为我想保持连续性。它也可以与opencl一起工作,并且不需要任何C99的东西。

float nan_to_num(float num){
  if (isinf(num)){
    if (signbit(num))
      return -MAXFLOAT;
    else
      return MAXFLOAT;
  } else {
    return num;
  }
}

试试这个:

#include <math.h>
double normalize(double num)
    if (isnormal(num)){
        return num;
    } else {
        return 0;
    }
}

如果要对无穷大进行特殊处理,您还可以使用isinf(num)作为条件并返回您选择的"大"数