[英]What do the > < signs in numpy dtype mean?
dtype='f'
, dtype='f4'
, dtype='>f4'
, dtype'<f4'
什么區別? 關於類型的文檔中沒有解釋語法(除了'f'是'float32'的簡寫); 它廣泛用於記錄頁面,但>
/ <
的含義在那里也沒有解釋。
經過一些實驗,我發現了這一點
In [13]: a = np.array([1.0], dtype='f')
In [15]: print(a.dtype)
float32
和
In [16]: a = np.array([1.0], dtype='<f4')
In [17]: print(a.dtype)
float32
但
In [18]: a = np.array([1.0], dtype='>f4')
In [19]: print(a.dtype)
>f4
它讓我相信那些不等同,這可能是我對外部庫所面臨的問題的解釋。
字節序。
<
= little-endian(LSB優先)
>
= big-endian(MSB優先)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.byteorder.html
通過查找數據類型對象,您可以看到'>'和'<'引用數據類型的Endianess
https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
>>> dt = np.dtype('>H') # big-endian unsigned short
>>> dt = np.dtype('<f') # little-endian single-precision float
f是單精度浮點數,在您的情況下,它使用4個字節(4 x 8 = 32位)。
dtype='<f4'
使用小端字節順序使dtype成為32位單精度浮點數。
有關Endianness的更多信息,請訪問wiki https://en.wikipedia.org/wiki/Endianness
我剛才有同樣的問題,並嘗試在線搜索答案。
'f'是'float32'的簡寫。
'f4'也表示'float32',因為它有4個字節,每個字節有8位。
類似地,'f8'表示'float64',因為8 * 8 = 64。
對於'> f4'和' <f4
'之間的差異,它與32位如何以4個字節存儲有關。
('>')Big Endian字節順序:數據的最高有效字節(“大端”)位於具有最低地址的字節。 其余數據按順序放在內存中的后三個字節中。
('<')Little Endian字節順序:數據的最低有效字節(“小端”)放在具有最低地址的字節處。 其余數據按順序放在內存中的后三個字節中。
有關更多詳細信息,請參閱此鏈接: https : //chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.