提问人:Jennifer Kenney 提问时间:11/1/2023 更新时间:11/1/2023 访问量:19
Python 3 对由 f(element) 分箱的数组中的元素进行计数的最具性能的方法
Python 3 Most Performative Way to count elements in an array binned by f(element)
问:
给定一个函数:
def foo_bar_bazzle(x):
# do something, could be anything
return result
和一个数组 arr (1 <= len(arr) <= 10**9) 的值来使用该函数进行评估,我想找到最有效的方法来查找元素计数,i 在 arr 中,按 foo_bar_bazzle(i) 的值分组。
这给了我正确的分组计数:
rslt_i = {}
for i in arr:
rslt_i.setdefault(foo_bar_bazzle(i), []).append(i)
允许我对每个 foo_bar_bazzle(i) 的 len() 执行非关联操作:
return sum((len(v)**2 for v in rslt_i.values()))
但它不符合我的性能要求。在这里,我可以做些什么来加速 count(x) 组的 f(x)?
答: 暂无答案
评论
arr
foo_bar_bazzle
O(n)
i
foo_bar_bazzle