簡體   English   中英

> <numpy dtype中的符號是什么意思?

[英]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.

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