19、Numpy字節交換

1、番外說明

大家好,我是小P,本系列是本人對Python模塊Numpy的一些學習記錄,總結於此一方面方便其它初學者學習,另一方面害怕自己遺忘,希望大家喜歡。此外,對“目標檢測/模型壓縮/語義分割”感興趣的小夥伴,歡迎加入QQ羣 813221712 討論交流,進羣請看羣公告!(可以點擊如下連接直接加入!)
點擊鏈接加入羣聊【Object Detection】:https://jq.qq.com/?_wv=1027&k=5kXCXF8

2、正題

參考鏈接:

https://www.runoob.com/numpy/numpy-byte-swapping.html

在幾乎所有的機器上,多字節對象都被存儲爲連續的字節序列。字節順序,是跨越多字節的程序對象的存儲規則。

● 大端模式:指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字符串順序處理:地址由小向大增加,而數據從高位往低位放;這和我們的閱讀習慣一致。

● 小端模式:指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低。

例如在 C 語言中,一個類型爲 int 的變量 x 地址爲 0x100,那麼其對應地址表達式&x的值爲 0x100。且x的四個字節將被存儲在存儲器的 0x100, 0x101, 0x102, 0x103位置。
在這裏插入圖片描述
numpy.ndarray.byteswap()
numpy.ndarray.byteswap() 函數將 ndarray 中每個元素中的字節進行大小端轉換。

實例:numpy進行字節交換

import numpy as np 
 
a = np.array([1,  256,  8755], dtype = np.int16)  
print ('我們的數組是:')
print (a)
print ('以十六進制表示內存中的數據:')
print (map(hex,a))
# byteswap() 函數通過傳入 true 來原地交換 
print ('調用 byteswap() 函數:')
print (a.byteswap(True))
print ('十六進制形式:')
print (map(hex,a))

輸出結果爲:

我們的數組是:
[   1  256 8755]
以十六進制表示內存中的數據:
<map object at 0x104acb400>
調用 byteswap() 函數:
[  256     1 13090]
十六進制形式:
<map object at 0x104acb3c8>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章