Подтвердить что ты не робот

Численное целое число

Есть ли способ сохранить 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
4b9b3361

Ответ 1

Нет, вы не можете, по крайней мере, с текущей версией NumPy. A nan - специальное значение для массивов с плавающей запятой только.

Есть разговоры о введении специального бита, который позволил бы хранить неплавающие массивы, что на практике соответствовало бы nan, но пока (2012/10), он говорит только.

В то же время вы можете рассмотреть пакет numpy.ma: вместо того, чтобы выбирать недопустимое целое число, например -99999, вы можете использовать специальное значение numpy.ma.masked для представления недопустимого значения.

a = np.ma.array([1,2,3,4,5], dtype=int)
a[1] = np.ma.masked
masked_array(data = [1 -- 3 4 5],
             mask = [False  True False False False],
       fill_value = 999999)

Ответ 2

Нан - единственная вещь с плавающей точкой, ее нет в целых числах, поэтому нет:)

Выберите недопустимое значение, например -99999