我有一个名为MyFruits的值数组,如:
[apple, orange, banana, apple, pear]
然后我有一个数组列表,如:
[apple, orange]
[blueberry, watermelon, pear]
[grape, orange, grape, orange]
[]
[cantaloupe]
对于列表中的每个数组,我想得到与MyFruits数组相交的元素数除以数组中的元素总数。因此,输出将是:
2 / 2 = 1
1 / 3 = 0.66667
2 / 4 = 0.5
0 / 0 = (in this case 0)
0 / 1 = 0
基本上:
[1, 0.66667, 0.5, 0, 0]
我已经在Python中使用for循环完成了这项工作,但是数据集非常庞大,速度非常慢。有人建议使用numpy,但我很难理解
假设您有两个列表,一个长度为M,另一个长度为N。如果通过简单的线性搜索完成,则需要进行O(M*N)字符串比较才能找到两个列表中的元素
您可以使用Python集对此进行改进。将列表转换为Python集,并使用set intersection (&)查找它们的公共元素。然后复杂度降低到O(M+N)
这比你的好吗,还是一样
replit中的可执行文件:https://repl.it/@ToniAlatalo/CountOccurrences
我不认为numpy能帮上忙,它是用于数字处理的,但也许有一个好方法可以写出你需要的东西
相关问题 更多 >
编程相关推荐