Skip to main content
 首页 » 编程设计

python之我可以在不阅读全部内容的情况下获得 numpy 保存文件的形状吗(例如 memmap)

2025年05月04日28kerrycode

我有一个很大的 numpy 文件保存到磁盘,我想确定形状而不读取整个文件。

我可以使用 np.load(filename) 获取形状,但是当我尝试使用 np.memmap 时,似乎要求我提前知道形状,否则它默认读取 uint8 值的平面数组中的文件。

这可能吗?

请您参考如下方法:

Yes , 你会在文件的第一行找到纯文本的形状:

>>> a = np.random.rand(4,7) 
>>> np.save('/tmp/a', a) 
>>> 
$ head -1 /tmp/a.npy 
�NUMPYv{'descr': '<f8', 'fortran_order': False, 'shape': (4, 7), } 

下面是解析这个头的代码:

>>> with open('/tmp/a.npy', 'rb') as f: 
...     major, minor = np.lib.format.read_magic(f) 
...     shape, fortran, dtype = np.lib.format.read_array_header_1_0(f) 
...      
>>> shape 
(4, 7)