gpt4 book ai didi

python - 扩展分组表格数据的高效算法

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:31 27 4
gpt4 key购买 nike

我正在寻找 python 中的优化工具来执行我发现自己一遍又一遍地执行的数组操作任务。如果该工具已经存在,例如在 numpy 或 pandas 中,我宁愿实现它,而不是继续使用我自己的 cythonized for 循环。

我有两个长度相同的数组,A 和 B,存储一些关于分组数据的数据。数组 A 的第 i 个条目告诉我组 i 的一些属性;数组 B 的第 j 个条目告诉我组 j 中有多少成员; A 存储 float ,B 存储整数。因此,为了确定性,如果 A[5]=100.4 & B[5]=7,则第 5 组的质量等于 100.4,并且该组有 7 个成员。

我的目标是创建一个新的 float 数组 C,长度为 B.sum(),它是上述数据集的扩展。所以 C[0:B[0]] = A[0],C[B[0]:B[1]] = A[1],等等。在 pandas 等现有库中是否有优化的解决方案来执行此操作?

我现有的解决方案是初始化一个空数组 C,然后在 A 的元素上运行 for 循环,如上所述索引 C 的公共(public)元素。为了速度,我一直在用 cython 编写和编译 for 循环。但是这个特定的操作是我的代码中最大的瓶颈,它似乎是处理表格数据时非常常见的数组操作,所以我想知道是否已经有一个高度优化的算法可以做到这一点。

最佳答案

Numpy 有 repeat() 用于那种类型的东西。

给定两个数组

A = np.array([100.4,98.3,88.5])
B = np.array([7,3,10])
np.repeat(A,B)

给你

array([ 100.4,  100.4,  100.4,  100.4,  100.4,  100.4,  100.4,   98.3,
98.3, 98.3, 88.5, 88.5, 88.5, 88.5, 88.5, 88.5,
88.5, 88.5, 88.5, 88.5])

关于python - 扩展分组表格数据的高效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27621602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com