![]() |
1
6
以及numba解决方案。对于如此棘手的问题,它总是以7倍的优势战胜了numpy,因为只有一次通过了res。
我需要具体化
对于较大的阵列(100000行x 100列),间隙不太宽:
如果
|
![]() |
2
8
总体思路考虑我们在这里执行累积计数的一般情况,或者如果您将它们视为范围,我们可以将它们称为分组范围。
现在,这个想法开始于简单的——沿着各自的轴比较一次性切片,寻找不平等。焊盘
然后,它变得复杂-设置一个ID数组,目的是我们将最终的一个cumsum,它将以扁平的顺序被期望输出。因此,设置从初始化
我们将对此进行扩展,以解决行和列的一般情况。对于列的情况,我们将简单地转置、馈送到前面的行解决方案,最后再重新转置,就像这样。-
样品运行
让我们考虑一个示例运行,它将沿着每个列查找分组范围,每个组从
因此,为了解决数据帧输入和输出的问题,需要-
|
![]() |
3
2
使用的方法 Divakar 纵使如此,可能有一种完全矢量化的方法。
要检查相等性:
速度:
编辑:与
一些 计时
解决方案
的解决方案 Divakar
使用numba的解决方案 B. M.
|