У меня есть текстовый файл с номерами в нем следующим образом:энтропии в текстовом файле
1231313123123123
1432423432535345
3532523452345345
1231423432453455
3434535345345345
3452353453253453
все линии имеют одинаковую длину, я хочу, чтобы вычислить энтропию на каждой линии и имеют выход как:
2.64234234
2.65464564
2.35355435
etc.
Прямо сейчас с этой частью кода я даю мне энтропию, чтобы быть тем же, что я делаю неправильно?
Спасибо.
#!/usr/bin/env python
import math
def H(data):
if not data:
return 0
entropy = 0
for x in range(256):
p_x = float(data.count(chr(x)))/len(data)
if p_x > 0:
entropy += - p_x*math.log(p_x, 2)
return entropy
failas = open('text.txt', 'r')
for row in failas:
print H('failas')
Поскольку у вас есть 10 уникальных цифр на символ, разве вы не должны использовать базу 10 в своем журнале? например entropy + = - p_x * math.log (p_x, 10) – Cerin
FWIW код, очевидно, копирует/вставляет с http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html – tripleee