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
这让我相信那些不等同,这可能是我对外部图书馆所面临的问题的解释。
答案 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