我有一个名为 MyFruits 的值数组,例如:[apple, orange, banana, apple, pear]然后我有一个数组列表,例如:[apple, orange][blueberry, watermelon, pear][grape, orange, grape, orange][][cantaloupe]对于列表中的每个数组,我想获取与 MyFruits 数组相交的元素计数除以数组中的元素总数。所以输出将是:2 / 2 = 11 / 3 = 0.666672 / 4 = 0.50 / 0 = (in this case 0)0 / 1 = 0本质上:[1, 0.66667, 0.5, 0, 0]我一直在Python中使用for循环来做这件事,但是数据集很大而且速度非常慢。有人建议使用 numpy,但我很难理解。
2 回答
![?](http://img1.sycdn.imooc.com/545845e900013e3e02200220-100-100.jpg)
LEATH
TA贡献1936条经验 获得超6个赞
假设您有两个列表,一个长度为 M,另一个长度为 N。如果通过直接线性搜索完成,则需要 O(M * N) 字符串比较才能找到两个列表中的元素。
您可以使用 Python 集对此进行改进。将列表转换为 Python 集合并使用集合交集 (&)查找它们的公共元素。那么复杂度就降低到了 O(M + N)。
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
郎朗坤
TA贡献1921条经验 获得超9个赞
这比你现有的更好,还是一样?
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 可以在这里提供帮助,它用于数值处理,但也许有一个很好的方法来编写您需要的内容。
添加回答
举报
0/150
提交
取消