Проблема с np.nan при использовании его для замены всех элементов массива - PullRequest
2 голосов
/ 30 января 2020

Вот массив 1D:

a = np.array([1, 2, 3])

Я пытаюсь заменить все элементы на np.nan. Естественно, я бы попробовал:

a[:] = np.nan

, что в итоге вернуло:

array([-9223372036854775808, -9223372036854775808, -9223372036854775808])

Итак, вопрос прост: почему это не работает.

PS В настоящее время я просто использую

a = np.array([np.nan for a_i in a])

для достижения того, что я хотел сделать.

1 Ответ

3 голосов
/ 30 января 2020

Ваш массив создается с dtype='int64'. Если вы создадите свой массив как массив чисел с плавающей точкой, он будет работать.

a = np.array([1, 2, 3], dtype=float)
a[:] = np.nan
print(a)

даст

[nan nan nan]

в качестве альтернативы, вы можете создать свой массив, используя хотя бы один float в вашем начальном списке ( но лучше быть точным)

a = np.array([1., 2, 3])
a[:] = np.nan
print(a)

дает

[nan nan nan]
...