web-dev-qa-db-fra.com

Numpy - Remplacer un nombre par NaN

Je cherche à remplacer un nombre par NaN dans numpy et cherche une fonction comme numpy.nan_to_num, sauf en sens inverse.

Le nombre est susceptible de changer à mesure que différents tableaux sont traités car chacun peut avoir une NoDataValue définie de manière unique. J'ai vu des gens utiliser des dictionnaires, mais les tableaux sont grands et remplis de flotteurs positifs et négatifs. Je soupçonne qu'il n'est pas efficace d'essayer de charger tout cela dans quoi que ce soit pour créer des clés.

J'ai essayé d'utiliser les éléments suivants et numpy nécessitant que j'utilise any () ou all (). Je me rends compte que je dois répéter les éléments, mais j'espère qu'une fonction intégrée pourra y parvenir.

def replaceNoData(scanBlock, NDV):
    for n, i in enumerate(array):
        if i == NDV:
            scanBlock[n] = numpy.nan

NDV est la valeur sans données de GDAL et array est un tableau numpy.

Un tableau masqué est-il la voie à suivre peut-être?

28
Jzl5325
A[A==NDV]=numpy.nan

A == NDV produira un tableau booléen qui peut être utilisé comme index pour A

42
Paul