Перевернутая необычная индексация - PullRequest
4 голосов
/ 26 ноября 2011

Имея массив и маску для этого массива, используя причудливую индексацию, легко выбрать только те данные массива, которые соответствуют маске.

import numpy as np

a = np.arange(20).reshape(4, 5)
mask = [0, 2]
data = a[:, mask]

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

mask2 = np.ones(a.shape)==1
mask2[:, mask]=False
data = a[mask2].reshape(a.shape[0], a.shape[1]-size(mask))

Спасибо

1 Ответ

6 голосов
/ 26 ноября 2011

Взгляните на numpy.invert, numpy.bitwise_not, numpy.logical_not или более кратко ~mask.(В этом случае все они делают одно и то же.)

В качестве быстрого примера:

import numpy as np

x = np.arange(10)
mask = x > 5

print x[mask]
print x[~mask]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...