我有一个一维整数数组,可通过
从二进制中读取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's
代表用于标准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
如果任何人都可以推荐一种更好的方式来处理二进制值,那么我也愿意学习。帮助赞赏!
答案 0 :(得分:1)
您可以观看广播到'<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
一起使用。