python - 返回彼此相等的两个数组的值的索引的最快方法是什么?
问题描述
假设我有这两个 numpy 数组:
A = np.array([[1,2,3],[4,5,6],[8,7,3])
B = np.array([[1,2,3],[3,2,1],[8,7,3])
它应该返回
[0,2]
由于第 0 和第 2 索引处的值彼此相等。
这样做最有效的方法是什么?
我试过类似的东西:
[val for val in range(len(A)) if A[val]==B[val]]
但得到了错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解决方案
你最好寻找矢量化解决方案,所以......
你可以尝试这样做:
>>>np.where(np.all(A == B, axis=1))
array([0 2])
您可以在这里看到矢量化的好处:https ://chelseatroy.com/2018/11/07/code-mechanic-numpy-vectorization/amp/
推荐阅读
- jestjs - 开玩笑测试错误:无法解析 /myProj/public/libs/angularjs-datetime-picker/package.json
- wordpress - 从 Live WordPress 迁移到 Localhost 后,得到“不允许访问页面”
- c# - 在 Xamarin 中的 UI 和代码模块之间传递值的最佳方式
- python - Atom 中的“脚本”在哪里?
- angular - 是否可以以角度突出显示文本?
- android - 使用 Retrofit2 时总是调用 OnFailure 方法
- mysql - 将 MySQL 表数据实时提供给 ElasticSearch 的最佳方式是什么?
- c# - 字符串和串口输入的比较总是假的
- javascript - 搜索域:odoo 中的多个条件
- javascript - 使用通用导航菜单浏览多个页面时出错