Sal*_*ali 10 python numpy endianness
我正在阅读一个源代码,它下载zip文件并将数据读入numpy数组.代码假设在macos和linux上工作,这里是我看到的片段:
def _read32(bytestream):
dt = numpy.dtype(numpy.uint32).newbyteorder('>')
return numpy.frombuffer(bytestream.read(4), dtype=dt)
Run Code Online (Sandbox Code Playgroud)
此功能用于以下上下文:
with gzip.open(filename) as bytestream:
magic = _read32(bytestream)
Run Code Online (Sandbox Code Playgroud)
不难看出这里发生了什么,但我很困惑的目的newbyteorder('>').我阅读了文档,并知道端点是什么意思,但无法理解为什么开发人员添加了newbyteorder(在我看来并不是真的需要).
这是因为下载的数据采用大端格式,如源页面中所述:http://yann.lecun.com/exdb/mnist/
文件中的所有整数都以大多数非英特尔处理器使用的MSB优先(高端)格式存储.英特尔处理器和其他低端机器的用户必须翻转标头的字节.
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |