簡體   English   中英

使用 numpy 將 int 轉換為位數組

[英]using numpy to convert an int to an array of bits

我需要一種方法將 2000 萬個 32 位和 64 位整數轉換為相應的位數組(因此這必須具有內存/時間效率)。 根據 SO 上不同問題/答案的建議,我試圖通過使用numpy.unpackbits來做到這numpy.unpackbits 在嘗試這種方法時,我遇到了意想不到的結果:

np.unpackbits(np.array([1], dtype=np.uint64).view(np.uint8))

產生:

array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)

我希望1元素是最后一個,而不是中間。 所以我顯然錯過了保留字節順序的東西。 我錯過了什么?

嘗試: dtype='>i8' ,像這樣:

In [6]: np.unpackbits(np.array([1], dtype='>i8').view(np.uint8))
Out[6]: 
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], dtype=uint8)

參考:

http://docs.scipy.org/doc/numpy/user/basics.byteswapping.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM