我正在使用后续函数导入Fashion-MNIST数据(myFile参数将由Fashion-MNIST数据替换):
import gzip
import numpy as np
def OpenImage(myFile):
with gzip.open(myFile, "rb") as f:
data = f.read()
return np.frombuffer(data, dtype=np.uint8, offset=16).reshape(-1,28,28).astype(np.float32)
现在,有一件事我真的无法理解:需要给np.frombuffer一个对象,该对象公开了缓冲区接口。这就是在python文档中所说的。由f.read()返回并存储在数据中的对象因此必须是公开缓冲区接口的对象。我认为fileobjects是公开缓冲区接口的对象-难道这意味着由处理文件的方法(例如read()或write())返回的任何对象都公开了缓冲区接口吗?我的意思是,f.read()不会返回指向存储myFile内容的内存的指针吗?然后,np.frombuffer()能够获取存储在该内存中的任何内容并将其弄乱。 我想我在这里的问题还在于了解缓冲区接口到底是什么,“暴露”缓冲区接口是什么意思?