Coverage for src/extratools_core/mathtools.py: 0%

9 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-05 23:54 -0700

1from collections import Counter 

2from collections.abc import Iterable 

3from math import inf, log2 

4 

5 

6def safediv(a: float, b: float) -> float: 

7 return inf * a if b == 0 else a / b 

8 

9 

10def entropy[T](data: Iterable[T]) -> float: 

11 counter: Counter[T] = Counter(data) 

12 total: int = sum(counter.values()) 

13 

14 return -sum( 

15 p * log2(p) 

16 for p in ( 

17 curr / total 

18 for curr in counter.values() 

19 ) 

20 )