Coverage for src/extratools_core/mathtools.py: 0%
9 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-05 19:38 -0700
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-05 19:38 -0700
1from collections import Counter
2from collections.abc import Iterable
3from math import inf, log2
6def safediv(a: float, b: float) -> float:
7 return inf * a if b == 0 else a / b
10def entropy[T](data: Iterable[T]) -> float:
11 counter: Counter[T] = Counter(data)
12 total: int = sum(counter.values())
14 return -sum(
15 p * log2(p)
16 for p in (
17 curr / total
18 for curr in counter.values()
19 )
20 )