我试图在具有相同列数的两个矩阵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)]


请注意,这将产生TrueFalse而不是1和0,但是boolintTrue == 1False == 0的子类。

要获取发生这种情况的最大行,您可以使用

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


如果您想要它们共有的行数,可以使用

same_count == sum(same_rows)


请注意,这全部用于python,并假定矩阵是列表或元组的列表或列表或元组的元组。 HTH。

08-27 09:14