Вы можете использовать следующие методы для удаления значений NaN из массива NumPy:
Способ 1: Используйте isnan()
new_data = data[~np.isnan (data)]
Способ 2: использовать isfinite()
new_data = data[np.isfinite (data)]
Способ 3: Используйте logical_not()
new_data = data[np.logical_not (np.isnan (data))]
Каждый из этих методов дает один и тот же результат, но первый метод является самым коротким для ввода, поэтому он, как правило, используется чаще всего.
В следующих примерах показано, как использовать каждый метод на практике.
Пример 1. Удаление значений NaN с помощью isnan()
В следующем коде показано, как удалить значения NaN из массива NumPy с помощью функции isnan() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[~np.isnan (data)]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Обратите внимание, что два значения NaN были успешно удалены из массива NumPy.
Этот метод просто сохраняет все элементы в массиве, которые не являются (~) значениями NaN.
Пример 2. Удаление значений NaN с помощью isfinite()
В следующем коде показано, как удалить значения NaN из массива NumPy с помощью функции isfinite() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[np.isfinite (data)]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Обратите внимание, что два значения NaN были успешно удалены из массива NumPy.
Этот метод просто сохраняет все элементы в массиве, которые являются конечными значениями.
Поскольку значения NaN не являются конечными, они удаляются из массива.
Пример 3. Удаление значений NaN с помощью logical_not()
В следующем коде показано, как удалить значения NaN из массива NumPy с помощью функции logical_not() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[np.logical_not (np.isnan (data))]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Обратите внимание, что два значения NaN были успешно удалены из массива NumPy.
Хотя этот метод эквивалентен двум предыдущим, он требует больше ввода, поэтому используется не так часто.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:
Pandas: как заменить пустые строки на NaN
Pandas: как заменить значения NaN строкой