我有一个很大的 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)
