解析通过fromfile从二进制读取的numpy列表

时间:2019-05-14 00:30:06

标签: python arrays list numpy binary

我有一个一维整数数组,可通过

从二进制中读取
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

如果任何人都可以推荐一种更好的方式来处理二进制值,那么我也愿意学习。帮助赞赏!

1 个答案:

答案 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一起使用。