我在其中數據被以16位整數的塊,像這樣組織的二進制文件:閱讀位電平的二進制數據
- 位15:數字位1
- 位14:數字比特2
- 位13至0:14位帶符號整數
,我發現如何提取從文件中的數據,以3個數組的唯一方法是:
data = np.fromfile("test1.bin", dtype=np.uint16)
digbit1 = data >= 2**15
data = np.array([x - 2**15 if x >= 2**15 else x for x in data], dtype=np.uint16)
digbit2 = data >= 2**14
data = np.array([x-2**14 if x >= 2**14 else x for x in data])
data = np.array([x-2**14 if x >= 2**13 else x for x in data], dtype=np.int16)
現在我知道我可以用原始數據的for循環做同樣的事情,並填寫3個單獨的數組,但這仍然是醜陋的。我想知道的是如何以dtype=[('db', [('1', bit), ('2', bit)]), ('temp', 14bit-signed-int)])
的方式更高效地完成此操作,以便像data['db']['1'] = array of ones and zeros
那樣訪問。
曾聽說過'pack'。我真的不知道numpy與二進制文件有什麼關係。 –
你能以更有幫助的方式來評論你的評論嗎?也許它與自己的二進制文件沒有太大的關係,但有內容的話它確實有用。至少在我的情況下。 – TheoryX