Есть ли способ сохранить NaN в массиве Numpy целых чисел?
Я получаю:
a=np.array([1],dtype=long)
a[0]=np.nan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
Ответ 1
Нет, вы не можете, по крайней мере, с текущей версией NumPy. A nan - специальное значение для массивов с плавающей запятой только.
Есть разговоры о введении специального бита, который позволил бы хранить неплавающие массивы, что на практике соответствовало бы nan, но пока (2012/10), он говорит только.
В то же время вы можете рассмотреть пакет numpy.ma: вместо того, чтобы выбирать недопустимое целое число, например -99999, вы можете использовать специальное значение numpy.ma.masked для представления недопустимого значения.