我有一个一维整数数组,通过
从二进制读取data = np.fromfile(file.dat, 'u1')
数据返回的位置
array([242, 255, 101, 0, 124, 0, 86, 0, 33, 0,
112, 0, 32, 1, 74, 1, 195, 0, 16, 0], dtype=uint8)
系列中的 0
表示用于高于或低于标准 256 的值的额外位。例如,索引 0 处的 244
应为 -14,并表示为255(或 256) - 242。相反,索引 13 处的值 - 读作 32 实际是 256 + 32,或 288。我试图让上面的数组看起来像 --
[-14, 101, 124, 86, 33, 112, 288, 330, 195, 16]
如果找到值 1 或 255,我想我想要使用索引和值来评估前面的值的东西。
我从下面开始,但最终失去了线索。
for i, a in enumerate(data):
if a == 255:
neg = i,a
如果有人可以推荐一种更好的方法来处理二进制值,我也愿意学习。帮助表示赞赏!
最佳答案
您可以观看 '<i2'
(<
代表小端,i
代表有符号整数,2
代表 2 字节)
x = np.array([242, 255, 101, 0, 124, 0, 86, 0, 33, 0,
112, 0, 32, 1, 74, 1, 195, 0, 16, 0], dtype=np.uint8)
x.view('<i2')
# array([-14, 101, 124, 86, 33, 112, 288, 330, 195, 16], dtype=int16)
或者您可以使用'<i2'
直接与 fromfile
.
关于python - 解析通过 fromfile 从二进制文件读取的 numpy 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121484/