Фильтровать многомерный массив numpy по столбцам - PullRequest
1 голос
/ 20 марта 2020

У меня есть многомерный массив numpy, и я хочу указать только c значений в каждом столбце массива. Если значение не соответствует тому, по которому я фильтрую, я хочу удалить всю строку. Фрагмент кода:

array = ([4, 78.01, 65.00, 98.00],
         [5, 23.08, 87.68, 65.3],
         [6, 45.98, 56.54, 98.76],
         [7, 98.23, 26.65, 46.56])

Например, в столбце 1 я хотел бы, чтобы числа были в диапазоне от 0 до 90, а в столбце 4 - в значениях от 70 до 100. Итак, мой идеальный вывод будет:

 array = ([4, 78.01, 65.00, 98.00],
         [6, 45.98, 56.54, 98.76])

Есть ли способ сделать это?

1 Ответ

1 голос
/ 20 марта 2020

Вам нужно связать все условия с помощью bitwise operators и выполнить логическое индексирование:

array[(array[:,0] > 0) & (array[:,0] < 100) & (array[:,3] > 90) & (array[:,3] < 100)]

array([[ 4.  , 78.01, 65.  , 98.  ],
       [ 6.  , 45.98, 56.54, 98.76]])
...