python - 我不知道为什么我会为每个匹配的子列表获得重复的索引
问题描述
我试图做的是采取最快的路线来标记特定超级列表中子列表的每个索引。
import numpy as np
l1 = [['a', 'b'], ['c', 'd'], ['a', 'b'], ['a', 'b']]
l2 = ['a', 'b']
a = np.array(l1)
b = np.array(l2)
x = np.where(a == b)[0]
print(x)
输出:
[0 0 2 2 3 3]
解决方案
因为你只得到输出的第一个元素[0]
,a
是 2D 数组,输出有 2 个索引“用于行和列位置”
import numpy as np
l1 = [['a', 'b'], ['c', 'd'], ['a', 'b'], ['a', 'b']]
l2 = ['a', 'b']
a = np.array(l1)
b = np.array(l2)
x,y = np.where(a == b)
a[x,y]
array(['a', 'b', 'a', 'b', 'a', 'b'], dtype='<U1')
如果您希望以数组方式比较它们,您应该循环遍历a
x = np.where([np.array_equal(i,b) for i in a])[0]
x
array([0, 2, 3], dtype=int64)
推荐阅读
- django - Django 中的简单测试失败
- python - 强制退出后使python脚本在.txt文件中写入输出
- java - 如何通过 mulesoft 连接两个不同的 RESTful api
- elasticsearch - 弹性搜索最佳实践
- r - 如果值出现在另一个集合中,闪亮的 DT 突出显示单元格
- c - (真的)'<' 比 C 中的 '!=' 快吗?
- svn - 恢复复制然后编辑的文件的 SVN 祖先
- google-apps-script - 谷歌表格 - 用不同单元格的内容填充一个单元格,而不是空白
- android - 如何使用范围过滤 SQL 数据库并将其显示在 ListView 上
- python - 为什么 call() 之后的其余代码不起作用?