удаление строк в массиве numpy

У меня есть массив, который может выглядеть так:

ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] 

Обратите внимание, что одна из строк имеет нулевое значение в конце. Я хочу удалить любую строку, содержащую нуль, сохраняя при этом любую строку, содержащую ненулевые значения во всех ячейках.

Но массив будет иметь разные количества строк при каждом заполнении, а нули будут располагаться в разных строках каждый раз.

Я получаю число ненулевых элементов в каждой строке со следующей строкой кода:

 NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1) 

Для массива, приведенного выше, NumNonzeroElementsInRows содержит: [5 4]

Пять указывают, что все возможные значения в строке 0 отличны от нуля, а четыре указывают, что одно из возможных значений в строке 1 равно нулю.

Поэтому я пытаюсь использовать следующие строки кода для поиска и удаления строк, содержащих нулевые значения.

 for q in range(len(NumNonzeroElementsInRows)): if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max(): p.delete(ANOVAInputMatrixValuesArray, q, axis=0) 

Но по какой-то причине этот код, похоже, ничего не делает, хотя выполнение большого количества команд печати указывает на то, что все переменные, похоже, правильно заполняются, приводя к коду.

Должен быть простой способ просто «удалить любую строку, содержащую нулевое значение».

Может ли кто-нибудь показать мне, какой код писать для этого?

  • как я могу найти и удалить наложенные фрагменты изображения из списка?
  • Index n мерный массив с (n-1) d массивом
  • Как я могу предотвратить индексы TypeError: list должны быть целыми, а не кортежем при копировании списка python в массив numpy?
  • Как использовать numpy для получения совокупного счета по уникальным значениям в линейном времени?
  • Утилита устаревания FORTRAN в Python. Можно ли использовать `setuptools` и` numpy.distutils`?
  • Получение индексов как нулевых, так и ненулевых элементов в массиве
  • Конкатенация разреженных матриц в Python с использованием SciPy / Numpy
  • Анимация, основанная только на обновлении цветов в сюжете
  • 4 Solutions collect form web for “удаление строк в массиве numpy”

    Самый простой способ удалить строки и столбцы из массивов – это метод numpy.delete .

    Предположим, что у меня есть следующий массив x :

     x = array([[1,2,3], [4,5,6], [7,8,9]]) 

    Чтобы удалить первую строку, выполните следующие действия:

     x = numpy.delete(x, (0), axis=0) 

    Чтобы удалить третий столбец, выполните следующие действия:

     x = numpy.delete(x,(2), axis=1) 

    Таким образом, вы можете найти индексы строк, которые имеют в них 0, поместить их в список или кортеж и передать это как второй аргумент функции.

    Вот один вкладыш (да, он похож на user333700, но немного более простой):

     >>> import numpy as np >>> arr = np.array([[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]]) >>> print arr[arr.all(1)] array([[ 0.96488889, 0.73641667, 0.67521429, 0.592875 , 0.53172222]]) 

    Кстати, этот метод намного, намного быстрее, чем метод маскированных массивов для больших матриц. Для матрицы 2048 x 5 этот метод примерно в 1000 раз быстрее.

    Кстати, метод user333700 (из его комментария) был немного быстрее в моих тестах, хотя это пугает мой разум, почему.

    Это похоже на ваш оригинальный подход и будет использовать меньше места, чем ответ unutbu , но я подозреваю, что он будет медленнее.

     >>> import numpy as np >>> p = np.array([[1.5, 0], [1.4,1.5], [1.6, 0], [1.7, 1.8]]) >>> p array([[ 1.5, 0. ], [ 1.4, 1.5], [ 1.6, 0. ], [ 1.7, 1.8]]) >>> nz = (p == 0).sum(1) >>> q = p[nz == 0, :] >>> q array([[ 1.4, 1.5], [ 1.7, 1.8]]) 

    Кстати, ваша строка p.delete() не работает для меня – у ndarray s нет атрибута .delete .

    numpy предоставляет простую функцию для выполнения той же самой вещи: предположим, что у вас есть маскированный массив a, вызывающий numpy.ma.compress_rows (a) удалит строки, содержащие маскированное значение. Думаю, это намного быстрее …

    Interesting Posts

    Python: как выполнять базовые манипуляции с данными, например, в R?

    контекст в pyparsing действий синтаксического анализа, кроме глобальных

    Как относиться к относительным путям ресурсов при работе с репозиторием кода в Python

    Отключить кнопку «Назад» браузера после выхода из системы?

    Как очистить динамические веб-страницы от Python

    Использование статических методов в python – лучшая практика

    Извлечение токена и секрет из объекта gdata.gauth.OAuthHmacToken python

    Как я могу решить уравнения в Python?

    Как использовать часовые пояса с объектом datetime в python?

    Python: Событие Schedular, как кварц

    Каков наилучший способ опробовать / профилировать приложение PyObjC?

    мультиграфический рисовать python

    Python Tkinter: добавление виджета в диалоговые окна файлов

    использовать python для генерации графика в excel

    Как выпрямить область с вращающимся прямоугольником изображения, используя opencv в python?

    Python - лучший язык программирования в мире.