Как удалить значения NaN из массива NumPy (3 метода)


Вы можете использовать следующие методы для удаления значений 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 строкой