Skip to content
Permalink
b494d95d4b
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
29 lines (23 sloc) 657 Bytes
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""This module implements the Shannon entropy of a discrete sequence.
"""
from collections import Counter
from math import log
def entropy(X):
"""Compute the entropy of a message.
Args:
X (sequence): a sequence of discrete outcomes
Returns:
(float): the entropy of X
"""
res = 0
n = len(X)
counts = Counter(X).values()
for count in counts:
res -= (count / n) * (log(count, 2) - log(n, 2))
return res
if __name__ == "__main__":
print(entropy([1, 2, 1, 1, 1, 1]))
print(entropy([1, 1, 1, 1, 1, 1]))
print(entropy([1, 1, 1, 2, 2, 2]))