txt文件中的熵

时间:2010-02-02 16:47:56

标签: python

我有一个带有数字的文本文件,如下所示:

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')

3 个答案:

答案 0 :(得分:10)

failas = open('text.txt', 'r')
for row in failas:
    print H(row)

答案 1 :(得分:5)

也许你的意思是print H(row)

答案 2 :(得分:1)

以上所有内容,以及您可能不希望在熵计算中的每一行末尾包含\n。使用H(row.rstrip('\n'))

您可以通过检查代码所篡改的数据来回答您自己的许多问题。在这种情况下,在print repr(data)行之后插入def H(data):会直接显示问题所在。