【发布时间】:2019-09-16 06:48:28
【问题描述】:
假设我有一个像这样的 排序 主列表:
main = ["a", "b", "cd", "e"]
还有很多其他列表,例如 l1 = ["a", "cd"] 和 l2 = ["b", "cd"]。还保证了单个列表的所有元素,如l1 和l2 也属于main。 并非所有单个列表的长度都必须相同,但所有列表的长度都小于或等于main。
现在,对于每个单独的列表,我想创建一个向量来编码 main 的哪些元素出现在单独的列表中。例如对于l1,我们将得到一个向量(numpy 数组)[1,0,1,0],因为main 的第一个和第三个元素(我可以说“第一个”和“第三个”,因为main 已排序)。同样对于l2,我们将得到[0,1,1,0]。
什么是执行此操作的有效方法?我不想要天真的蛮力方法,因为那会非常缓慢。是否涉及任何中间 numpy 转换/操作?很高兴得到这方面的帮助!
【问题讨论】:
-
可以有
["a", "a", "a"]吗?它的预期输出是什么? -
您通常会有多少这样的个人列表?
-
@Divakar:大约 600000。主列表有大约 4000 个元素。
-
发布的解决方案是否适合您?
-
@Divakar:我使用过 numpy.isin() 因为我必须将该功能包装在另一个函数中,并且 np.isin 很容易实现(内置单行)并且看起来效率也很高
标签: python arrays performance numpy