>是什么< numpy dtype中的标志是什么意思?

时间:2016-11-14 13:06:14

标签: python numpy types

dtype='f'dtype='f4'dtype='>f4'dtype'<f4'之间的区别是什么? 语法没有在docs on types中解释(除了'f'是'float32'的简写);它在records的页面中广泛使用,但> / <的含义在此处也无法解释。

经过一些实验,我发现了

    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

这让我相信那些不等同,这可能是我对外部图书馆所面临的问题的解释。

3 个答案:

答案 0 :(得分:9)

字节序。

< = little-endian(LSB优先)

> = big-endian(MSB优先)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.byteorder.html

答案 1 :(得分:6)

通过查找数据类型对象,您可以看到'&gt;'和'&lt;'引用数据类型的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

答案 2 :(得分:1)

我只是遇到了同样的问题,并试图在线搜索答案。

'f'是'float32'的简写。

“ f4”也表示“ float32”,因为它有4个字节,每个字节有8位。

类似地,“ f8”表示“ float64”,因为8 * 8 = 64。

对于'> f4'和'require'之间的区别,与32位以4个字节存储的方式有关。

('>')Big Endian字节顺序:数据的最高有效字节(“大端”)放在地址最低的字节处。其余数据按顺序放置在内存的后三个字节中。

('<')小尾数字节顺序:数据的最低有效字节(“小尾数”)放在地址最低的字节处。其余数据按顺序放置在内存的后三个字节中。

请查看此链接以获取更多详细信息:https://chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html