如何解决理解python中的字节对象
亲爱的:我正在尝试在压缩过程中测量香农熵。为此,我首先生成一个由 0 和 1 组成的数组,我将其称为二进制序列 seq
,然后使用 zlib.compress(seq)
对其进行压缩。例如:
seq = np.array([0,1])
seq_compress = zlib.compress(seq)
seq_compress
[out] >>> b'x\x9cc`\x80\x00F$\x1a\x00\x00$\x00\x03'
最后一个对象 set_compress
是字节类型。为了测量熵率,我需要计算在这个压缩序列中出现 0 和 1 的概率,因此我需要将 seq_compress
转换为只有 0 和 1 的列表、数组或字符串。
我尝试了以下方法:
import sys
bin(int.from_bytes(seq_compress,byteorder=sys.byteorder))
[out]>>>'0b1000000000000100000000000000000000000001100010000001000110000000001000000001100000011000111001110001111000'
这比我预期的要长得多。我知道这与 'bytes' 对象有关,因为如果我将初始数组转换为字节,我会得到类似的效果:
seq_bytes = seq.tobytes()
bin(int.from_bytes(seq_bytes,byteorder=sys.byteorder))
[out]>>>
'0b10000000000000000000000000000000000000000000000000000000000000000'
我认为这没什么大不了的,因为最后一个对象的熵与我开始使用的数组相同,但我想知道为什么要添加所有这些 0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。