Функция numpy where () работает только один раз - PullRequest
2 голосов
/ 27 октября 2019
import numpy as np
myList = [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]]
arr = np.array(myList, dtype='float')
arr[1,1] = np.nan
arr[1,2] = np.inf
arr = np.where(arr==np.inf, -1, arr)
arr = np.where(arr==np.nan, -1, arr)
print(arr)

Когда я пытаюсь заменить nan и inf, только первый, где работает функция. Если они переключены, nan будет работать вместо inf

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

Вы не можете проверить с помощью == np.nan, поскольку NaN не равно NaN, действительно:

>>> np.nan == np.nan
False

Вы можете использовать isnan(..) function [numpy-doc] для этого:

arr = np.where(<b>np.isnan(</b>arr<b>)</b>, -1, arr)
0 голосов
/ 27 октября 2019

Вы должны использовать функцию np.isnan , чтобы проверить 'nan'ness числа.

Вы можете посмотреть на этот вопрос :

«NaN обладает свойством, которое не равно себе, вы должны использовать np.isnan для проверки значений NaN»

import numpy as np
myList = [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]]
arr = np.array(myList, dtype='float')
arr[1,1] = np.nan
arr[1,2] = np.inf
arr = np.where(arr==np.inf, -1, arr)
arr = np.where(np.isnan(arr), -1, arr)
print(arr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...