удаление строк в массиве 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)

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

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

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

80
задан Unihedron 24 October 2014 в 18:17
поделиться