为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2023-07-27 16:36:19
我有一个名为 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 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

假设您有两个列表,一个长度为 M,另一个长度为 N。如果通过直接线性搜索完成,则需要 O(M * N) 字符串比较才能找到两个列表中的元素。

您可以使用 Python 集对此进行改进。将列表转换为 Python 集合并使用集合交集 (&)查找它们的公共元素。那么复杂度就降低到了 O(M + N)。


查看完整回答
反对 回复 2023-07-27
?
郎朗坤

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 可以在这里提供帮助,它用于数值处理,但也许有一个很好的方法来编写您需要的内容。


查看完整回答
反对 回复 2023-07-27
  • 2 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信