Numpy: падение строк со всеми значениями nan или 0

Я хотел бы удалить все значения из таблицы, если строки = nan или 0 .

Я знаю, что есть способ сделать это, используя pandas ie pandas.dropna(how = 'all') но мне нужен метод numpy для удаления строк со всеми nan или 0 .

Есть ли эффективная реализация этого?

4 Solutions collect form web for “Numpy: падение строк со всеми значениями nan или 0”

 import numpy as np a = np.array([ [1, 0, 0], [0, np.nan, 0], [0, 0, 0], [np.nan, np.nan, np.nan], [2, 3, 4] ]) mask = np.all(np.isnan(a) | np.equal(a, 0), axis=1) a[~mask] 

Это приведет к удалению всех строк, всех нулей или всех nans:

 mask = np.all(np.isnan(arr), axis=1) | np.all(arr == 0, axis=1) arr = arr[~mask] 

И это приведет к удалению всех строк, которые являются либо нулями, либо nans:

 mask = np.all(np.isnan(arr) | arr == 0, axis=1) arr = arr[~mask] 

Мне нравится этот подход

 import numpy as np arr = np.array([[ np.nan, np.nan], [ -1., np.nan], [ np.nan, -2.], [ np.nan, np.nan], [ np.nan, 0.]]) mask = (np.nan_to_num(arr) != 0).any(axis=1) 

Вне:

 >>> arr[mask] ... array([[ -1., nan], [ nan, -2.]]) 

Кроме того: если вы хотите сбросить строки, если строка имеет nan или 0 в любом одном значении

 a = np.array([ [1, 0, 0], [1, 2, np.nan], [np.nan, np.nan, np.nan], [2, 3, 4] ]) mask = np.any(np.isnan(a) | np.equal(a, 0), axis=1) a[~mask] 

Вывод

 array([[ 2., 3., 4.]]) 
  • pandas - добавить новый столбец в dataframe из словаря
  • Динамическое имя столбца в оценке данных в панде
  • Сортировка Данных по Данному Панда
  • Анализ CSV-файла в pandas с запятыми в последнем столбце
  • Начать: прекратить нарезку несоответствий между numpy и Pandas?
  • Выполнение арифметических операций с вложенным фреймворком данных, содержащим список
  • Получить все ключи от объекта GroupBy в Pandas
  • SQL-подобные функции окна в PANDAS: Нумерация строк в Python Pandas Dataframe
  • Python - лучший язык программирования в мире.