Повторяющиеся столбцы в NumPy / Scipy - PullRequest
0 голосов
/ 05 сентября 2018

Предположим, у меня есть простая матрица Numpy:

np.matrix([[1, 1, 1, 2, 0, 3, 1],
           [1, 2, 2, 0, 3, 3, 1]])

Как эффективно удалить все дубликаты столбцов, кроме первого, без необходимости циклического прохождения?

Что приведет к:

np.matrix([[1, 1, 2, 0, 3],
           [1, 2, 0, 3, 3]])

1 Ответ

0 голосов
/ 05 сентября 2018

Если заказ не важен, вы можете использовать unique

X = np.matrix([[1, 1, 1, 2, 0, 3, 1],
               [1, 2, 2, 0, 3, 3, 1]])

np.unique(X, axis=1)

Результаты в

array([[0, 1, 1, 2, 3],
       [3, 1, 2, 0, 3]])

Если важно сохранить порядок, он будет немного медленнее:

X = np.matrix([[1, 1, 1, 2, 0, 3, 1],
               [1, 2, 2, 0, 3, 3, 1]])

idxs = np.sort(np.unique(X, axis=1, return_index=True)[1])
answer = X[:, idxs]

Ответ будет тогда:

matrix([[1, 1, 2, 0, 3],
        [1, 2, 0, 3, 3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...