使用 numpy 获取数组列表中相交元素的计数(避免 for 循环)

我有一个名为 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,但我很难理解。


忽然笑
浏览 78回答 2
2回答

LEATH

假设您有两个列表,一个长度为 M,另一个长度为 N。如果通过直接线性搜索完成,则需要 O(M * N) 字符串比较才能找到两个列表中的元素。您可以使用 Python 集对此进行改进。将列表转换为 Python 集合并使用集合交集 (&)查找它们的公共元素。那么复杂度就降低到了 O(M + N)。

郎朗坤

这比你现有的更好,还是一样?ratios = []for d in data:  count = 0  for fruit in myFruits:    count += d.count(fruit)  ratio = count / (len(d) or 1)  ratios.append(ratio)我不认为 numpy 可以在这里提供帮助,它用于数值处理,但也许有一个很好的方法来编写您需要的内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python