我正在尝试对具有相同列数的两个矩阵 A 和 B 的行进行比较。
在 matlab 中命令 ismember(a, b, 'rows')
返回一个包含 1 的向量,其中 A 的行也是 B 的行,否则返回 0,并且还为 A 中作为 B 成员的每个元素返回 B 中的最高索引。
[tf, index] = ismember(A, B, 'rows');
Python中有等效的函数吗?有什么想法如何做到吗?
最佳答案
你可以得到你的向量
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,并假设矩阵是列表或元组的列表,或者列表或元组的元组。 HTH。
关于python - 相当于 Python 中 Matlab 中的 'ismember' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824778/