2017-01-11 2 views
0

Я понимаю, что NaN - это «Не номер», так почему он принимается в формулы без какого-либо исключения? Я понимаю это удобство при работе с пятнистыми данными, но в математической ситуации почему это не считается нулевым? Вместо этого это похоже на черную дыру, которая превращает все остальное в NaN.Почему numpy NaN генерирует TypeError при использовании в формуле?

Пример:

x = 5 
y = np.NaN 
z = x + y 
print(z) 

nan 
+4

Так как стандарты с плавающей точкой определяют NaN. И все, что сделано с не числом, также не является числом. (Передача по модулю по сравнению с несигнальными NaNs, но большинство программ фактически не поддерживает сигнальные NaN) – Max

+0

http://stackoverflow.com/questions/41486495/why-is-nan-considered-smaller-than-np-inf-in -numpy и ссылки – hpaulj

+2

Весь смысл NaNs заключается в том, что они постоянны - вам нужно только проверить окончательный результат любого вычисления, чтобы увидеть, не произошло ли что-то по пути, а не проверять после каждого шага. – jasonharper

ответ

0

Как видно из названия указывается NaN означает «не число», и он не равен 0. Таким образом, все арифметические вычисления с NaN возвращает NaN. В обычных случаях NaN означает, что некоторые данные отсутствуют. Поскольку @max упоминает, что Numpy использует стандарт IEEE для двоичной плавающей точки для арифметики (IEEE 754). Вы можете найти более подробную информацию здесь - Numpy NA

Смежные вопросы