Comportamento inesperado de nan ao somar uma matriz numpy cheia de nan

Este é um tópico interessante, pois pode levar a resultados inesperados no código. Suponha que eu tivesse uma matriz da seguinte maneira;

import numpy as np

X = np.array([np.nan,np.nan,np.nan,np.nan,np.nan])

np.nanmean(X) retorna corretamente um aviso de que a fatia média está vazia e retorna nan. No entanto, ao fazer uma soma da matriz,np.nansum(X), retorna0.0. Agora, enquanto matematicamente verdadeiro (a soma de nada é 0), o resultado esperado para ser retornado pode ser np.nan.

Por exemplo, eu tenho uma função em que, se um arquivo de dados de gelo não existir, ele criará uma matriz vazia de nans (180x360 pontos com cada ponto representando um grau lat / lon). Essa matriz é então passada para uma função que soma a matriz para descobrir a quantidade total de gelo na matriz. Se o valor esperado for de 9 a 10 milhões de km2 e o nansum retornar 0, isso pode ser enganoso. Isso é especialmente difícil se as extensões de gelo estiverem em torno de 0 de qualquer maneira. No gráfico abaixo, é claramente um arquivo de dados ausentes, levando a uma soma de gelo de 0,0, mas nem todos os casos são tão claros.

Já vi isso discutido em sites de desenvolvimento e quero saber por que não há uma opção de kwarg paranp.nansum() para retornar np.nan, se necessário, e B, existe uma função que retorne True / False se toda a matriz estiver cheia de nan?

questionAnswers(2)

yourAnswerToTheQuestion