首页 > 后端开发 > Python教程 > 如何有效地对 NumPy 数组进行分组?

如何有效地对 NumPy 数组进行分组?

Barbara Streisand
发布: 2024-11-24 22:40:11
原创
1002 人浏览过

How Can I Efficiently Group NumPy Arrays?

使用 NumPy 进行高效数组分组

虽然 NumPy 可能不提供专门为数组分组而设计的开箱即用函数,但有是可以有效实现类似目标的通用技术

受 Eelco 库的启发

一种方法受 Eelco Hoogendoorn 库的启发,通过利用输入数组的第一列单调递增的假设来简化它。如果没有,可以先使用 a = a[a[:, 0].argsort()] 进行排序。

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
登录后复制

唯一标识组

这个代码片段利用 np.unique() 来识别第一列中的唯一值,并返回它们的索引。这些索引用于将第二列拆分为代表每个组的单独子数组。

时间复杂度和性能

此方法表现出 O(n) 复杂度,使其高度高效的。对不同组大小的数组进行的经验 timeit 测量证实了其相对于 pandas、numpy-indexed 和 defaultdict 等其他方法的性能优势。

替代解决方案

超越所提出的方法,也可以探索基于 NumPy 的技术(例如 numpy_groupies)进行分组

其他注意事项

如果输入数组的第一列未排序,建议在分组之前对其进行排序,以确保结果准确。请记住,某些排序算法(例如 argsort)的时间复杂度为 O(n log(n))。

以上是如何有效地对 NumPy 数组进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板