python - 相当于 Python 中 Matlab 中的 'ismember' 吗?

标签 python matlab

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

请注意,这将产生 TrueFalse 而不是 1 和 0,但 boolint 的子类和 True == 1False == 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/

相关文章:

c - Matlab 用 mex 编译 C 文件时出错

python - 如何传递文件名的路径

python - 从技术上讲,numpy.mgrid 是什么?

python - Sphinx autodoc 给出警告 : py:class reference target not found: type warning

Python - 在图像上查找不同颜色的轮廓

matlab - matlab中两个单元格相加的方法

matlab - 为什么 MATLAB 在打印大量 (.png) 图形时速度变慢?

matlab - Matlab 中的图像变形

python - 如何在嵌套列表中获取最大字符串长度

matlab - 是否可以在不将单元格加载到内存的情况下将数据添加到 matlab 单元格中?