Эквивалент «ismember» из Matlab в Python? - PullRequest
2 голосов
/ 29 сентября 2010

Я пытаюсь выполнить сравнение строк двух матриц A и B с одинаковым количеством столбцов.

В matlab команда ismember(a, b, 'rows') возвращает вектор, содержащий 1, где строки A также являются строками B и 0 в противном случае, а также возвращает самый высокий индекс в B для каждого элемента в A, который является членом B.

[tf, index] = ismember(A, B, 'rows');

Есть ли эквивалентная функция в python? Есть идеи как это сделать?

1 Ответ

4 голосов
/ 29 сентября 2010

вы можете получить свой вектор как

same_rows = [a == b for a,b in zip(A, B)]

Обратите внимание, что это даст True и False вместо 1 и 0, но bool подклассами из int и True == 1 иFalse == 0.

, чтобы получить максимальную строку, в которой это происходит, вы можете просто использовать

max_row = next(i for i, row in enumerate(reversed(same_rows)) if row == True)

Если вам нужно общее количество строк, вы можете просто использовать

same_count == sum(same_rows)

Обратите внимание, что это все для Python и предполагает, что матрицы являются списками списков или кортежей или кортежей списков или кортежей.НТН.

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