tdigest
python工具 是一种用于高效计算近似分位数的数据结构和算法。相较于传统的分位数计算方法,tdigest可以实现以较小的内存开销和较快的计算速度,提供近似但足够精确的分位数估计。
1
2
3
|
from tdigest import TDigest
digest = TDigest()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
from numpy.random import random
import numpy as np
# (1) 逐一更新值
for x in range(100):
digest.update(random())
digest
# <T-Digest: n=100, centroids=100>
digest.n
# 100
# (2) 批量更新值
digest.batch_update([1, 2, 3])
# <T-Digest: n=103, centroids=103>
digest.batch_update(np.random.randn(5))
# <T-Digest: n=108, centroids=108>
|
1
2
3
4
5
6
7
|
# 中位数
digest.percentile(50)
# 0.4839611675217064
# 平均数
digest.trimmed_mean(0, 100)
|
1
2
3
4
5
6
7
|
# save
json.dumps(digest.to_dict())
# load
digest.update_from_dict({'K': 25, 'delta': 0.01,
'centroids': [{'c': 1.0, 'm': 1.0},
{'c': 1.0, 'm': 2.0},
{'c': 1.0, 'm': 3.0}]})
|