Удалить определенные значения массива: Python - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть массив формы (1179648, 909).Проблема в том, что некоторые строки заполнены только 0.Я проверяю это следующим образом:

for i in range(spectra1Only.shape[0]):
    for j in range(spectra1Only.shape[1]):
        if spectra1Only[i,j] == 0:

Теперь я хочу удалить всю строку [i], если есть какие-либо 0, которые появляются для получения меньшего количества только необходимых данных.

Мой вопрос: какой лучший способ сделать это?Remove?Del?numpy.delete?Или любой другой метод?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете использовать логическое индексирование с np.any вдоль axis=1:

spectra1Only = spectra1Only[~(spectra1Only == 0).any(1)]

Вот демонстрация:

A = np.random.randint(0, 9, (5, 5))

print(A)

[[5 0 3 3 7]
 [3 5 2 4 7]
 [6 8 8 1 6]
 [7 7 8 1 5]
 [8 4 3 0 3]]

print(A[~(A == 0).any(1)])

[[3 5 2 4 7]
 [6 8 8 1 6]
 [7 7 8 1 5]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...