我试图在具有相同列数的两个矩阵A和B的行之间执行比较。
在matlab中,命令ismember(a, b, 'rows')
返回一个包含1的向量,其中A的行也是B的行,否则返回0,并且还返回B中成员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。