给定一个一维numpy数组,目标是计算特定连续值的最大数量,例如,给定一个数组
arr
:
arr=np.array([1,1,1,2,2,3,4,4,4,4,4,2,4,4])
我想返回每个数字的最大连续值的数量。结果是一个二维数组,第一列是每个数字,第二列是每个数字的最大连续计数。
result=np.array([[1,3],[2,2],[3,1],[4,5]])
用pandas很容易做到:
s = pd.Series(arr)
out = (s.groupby(s.ne(s.shift()).cumsum(), sort=False)
.agg({'first', 'size'})
.groupby('first', sort=False)['size'].max()
.reset_index().to_numpy().tolist()
)
输出:
[[1, 3], [2, 2], [3, 1], [4, 5]]