Эквивалент Python функции MATLAB уникальный - PullRequest
2 голосов
/ 17 мая 2019

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

В Matlab это записывается как: [C,ia,ic] = unique(A)

Меня интересуют все выходные элементы, т. Е. C, ia и ic

вот пример того, что делает функция matlab

A = [9 2 9 5];
Find the unique values of A and the index vectors ia and ic, 
such that C = A(ia) and A = C(ic).

[C, ia, ic] = unique(A)
C = 1×3

     2     5     9

ia = 3×1

     2
     4
     1

ic = 4×1

     3
     1
     3
     2

Как я могу воспроизвести это на python, пожалуйста?Как уже упоминалось, меня интересуют все выходные элементы, например C, ia и ic

Спасибо

1 Ответ

2 голосов
/ 17 мая 2019

Решение с использованием numpy.unique (спасибо самому @SBad за улучшение качества решения):

import numpy as np

A = np.array([9,2,9,5])

C, ia, ic = np.unique(A, return_index=True, return_inverse=True)

print(C)
print(ia)
print(ic)

выход

[2 5 9]
[1 3 0]
[2 0 2 1]

с пониманием списка вы также можете получить ic как:

ic = [i for j in A for i,x in enumerate(C) if x == j]

Примечание :

Помните, что MATLAB использует индексирование на основе 1 (одного), а Python использует индексирование на основе 0 (нуля).

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