英文字母信息熵与冗余度计算Python实现

2023-05-16

26个英文字母在平均出现时的信息熵是4.7BIT,而去掉冗余度后的英文字母的信息熵是4.03BIT。

公式: H(信息熵) = -∑ Pi log2(Pi); Pi:为每个字母在信息中出现的概率; 计算公式并不复杂. 取以2为底的对数的道理也很简单,因为如果: 2n = X 的话,那么logX = n; 所以可以看出所谓信息熵就二进制的字符集在去掉冗余度后的二进制编码位数.冗余度是通过统计每个字符出现概率获得的。

各个字母英语中出现的频率

字母
英语中出现的频率
a
8.167%
b
1.492%
c
2.782%
d
4.253%
e
12.702%
f
2.228%
g
2.015%
h
6.094%
i
6.966%
j
0.153%
k
0.772%
l
4.025%
m
2.406%
n
6.749%
o
7.507%
p
1.929%
q
0.095%
r
5.987%
s
6.327%
t
9.056%
u
2.758%
v
0.978%
w
2.360%
x
0.150%
y
1.974%
z
0.074%

python代码实现:

import math

def calEntropy(string):
    h = 0.0
    sumt = 0
    letter = [0] * 26
    string = string.lower()
    for i in range(len(string)):
        if string[i].isalpha():
            letter[ord(string[i]) - ord('a')] += 1
            sumt += 1
    print('\n', letter)
    for i in range(26):
        p = 1.0 * letter[i] / sumt
        if p > 0:
            h += -(p * math.log(p, 2))

    return h


test = input("输入一个英文句子:")
print('\n熵为:', calEntropy(test))

'''
letter = [8167,1492,2782,4253,12702,2228,2015,6094,6966,153,772,4025,2406,6749,7507,1929,95,5987,6327,9056,2758,978,2360,150,1974,74]
h = 0
for i in range(26):
    h += -(letter[i]/sum(letter)*math.log(letter[i]/sum(letter),2))
print(h)
'''
结果请访问: 点击打开链接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

英文字母信息熵与冗余度计算Python实现 的相关文章

随机推荐

  • eclipse svn 分支合并到主干

    首先需厘清SVN的分支以下几个概念 xff1a trunk 主干 可以理解为开发环境的代码 xff0c 平常做开发的工作目录 branches xff1a 从主干拷贝了一份代码重新在svn服务器上的建了个分支目录 通常叫branch xff
  • Python GUI程序整理

    文章目录 GUI程序 Python课程设计Windows系统资源探测器 Python密码存储器 wxpython简单记录生词GUI程序 python微博爬虫GUI程序 Python刷访问量GUI程序 Python弹球游戏 xff08 tki
  • 基于词典的社交媒体内容的情感分析(Python实现)

    之前写了一篇基于NLTK情感预测的文章http www omegaxyz com 2017 12 15 nltk emotion hilite 61 27NLTK 27b 更多内容访问omegaxyz com 情感词典是从微博 新闻 论坛等
  • 在Linux(Ubuntu)下编写编译C语言

    大家都知道在Windows中运行C语言很简单 xff0c 打开一个IDE xff08 VS或者codeblocks xff09 编写代码 xff0c 点击一个按钮就能运行了 在Linux中 xff0c 大家不怎么习惯用IDE xff0c 更
  • 提高C++运行效率的方法

    一 尽量减少值传递 xff0c 多用引用来传递参数 至于其中的原因 xff0c 相信大家也很清楚 xff0c 如果参数是int等语言自定义的类型可能能性能的影响还不是很大 xff0c 但是如果参数是一个类的对象 xff0c 那么其效率问题就
  • 第十三次CCF CSP认证(2018年3月)真题跳一跳

    跳一跳 问题描述 近来 xff0c 跳一跳这款小游戏风靡全国 xff0c 受到不少玩家的喜爱 简化后的跳一跳规则如下 xff1a 玩家每次从当前方块跳到下一个方块 xff0c 如果没有跳到下一个方块上则游戏结束 如果跳到了方块上 xff0c
  • 第十三次CCFCSP认证(2018年3月)真题碰撞的小球

    问题描述 数轴上有一条长度为L xff08 L为偶数 的线段 xff0c 左端点在原点 xff0c 右端点在坐标L处 有n个不计体积的小球在线段上 xff0c 开始时所有的小球都处在偶数坐标上 xff0c 速度方向向右 xff0c 速度大小
  • 第十三次CCF CSP认证(2018年3月)真题URL映射

    问题描述 URL 映射是诸如 Django Ruby on Rails 等网页框架 web frameworks 的一个重要组件 对于从浏览器发来的 HTTP 请求 xff0c URL 映射模块会解析请求中的 URL 地址 xff0c 并将
  • 第十三次CCF CSP认证(2018年3月)真题棋局评估

    问题描述 Alice和Bob正在玩井字棋游戏 井字棋游戏的规则很简单 xff1a 两人轮流往3 3的棋盘中放棋子 xff0c Alice放的是 X xff0c Bob放的是 O xff0c Alice执先 当同一种棋子占据一行 一列或一条对
  • 第十三次CCF CSP认证(2018年3月)真题二次求和

    问题描述 给一棵 n 个节点的树 xff0c 用 1 到 n 的整数表示 每个节点上有一个整数权值 ai 再给出两个整数 L R 现在有 m 个操作 xff0c 每个操作这样描述 xff1a 给定树上两个节点 u v 和一个整数 d xff
  • 演化计算基本方法与思想

    生物系统中 xff0c 进化被认为是一种成功的自适应方法 xff0c 具有很好的健壮性 基本思想 xff1a 达尔文进化论是一种稳健的搜索和优化机制 大多数生物体是通过自然选择和有性生殖进行进化 自然选择决定了群体中哪些个体能够生存和繁殖
  • 发布jar包到Maven中央仓库

    平时自己开发的工具类或者其他的框架的jar包一般都是放在本地 或者把代码上传到github让别人去下载然后自己打包 今天就说说如何把自己的jar包发布到Maven的中央仓库 让其他使用你的jar包的直接去中央仓库下载 如果你用的是阿里云的m
  • 机器学习术语表

    本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义 原文地址 xff1a https developers google cn machine learning glossary hl 61 zh CN A A B
  • Python单下划线与双下划线

    foo 一种约定 Python内部的名字 用来区别其他用户自定义的命名 以防冲突 foo 一种约定 用来指定变量私有 程序员用来指定私有变量的一种方式 foo 这个有真正的意义 解析器用 classname foo来代替这个名字 以区别和其
  • wxpython控件自适应窗口大小

    问题 xff1a wxpython作的窗口 xff0c 点击窗口最大化 xff0c 就会出问题 xff0c 1 窗口控件并不一起最大化 2 最大化后有些控件找不着了 xff0c 再恢复窗口 xff0c 那些消失的控件一样找不到 wxPyth
  • Python统计磁盘代码文件行数

    听说简历要求10万行代码经验 于是写了个Python脚本用来计算电脑磁盘内代码的行数 主要功能 xff1a 统计指定代码的总行数 统计每个代码单独的行数 自定义设置存储路径 设计思路 xff1a 将文件转化为txt文档 xff0c 对txt
  • 第一个Android程序

    Android Studio 是一个Android集成开发工具 xff0c 基于IntelliJ IDEA 类似 Eclipse ADT xff0c Android Studio 提供了集成的 Android 开发工具用于开发和调试 在ID
  • 面向过程与面向对象代码实例对比

    面向过程式代码 xff08 使用数据结构的代码 xff09 便于在不改动既有数据结构的前提下添加新函数 面向对象代码便于在不改动既有函数前提下添加新类 过程式代码难以添加数据结构 xff0c 因为必须修改所有函数 面向对象代码难以添加新函数
  • 机器学习

    文章目录 机器学习基本理论 基本术语与方法特征选择概述多目标优化问题 分类算法 经典算法 分类算法NSGA2算法粒子群优化算法 xff08 PSO xff09 聚类算法蚁群算法 xff08 ACO xff09 其它算法 前沿算法 NSGA2
  • 英文字母信息熵与冗余度计算Python实现

    26个英文字母在平均出现时的信息熵是4 7BIT 而去掉冗余度后的英文字母的信息熵是4 03BIT 公式 H 信息熵 61 Pi log2 Pi Pi 为每个字母在信息中出现的概率 计算公式并不复杂 取以2为底的对数的道理也很简单 因为如果