<p>除非该信息被显式地存储在文件的某个地方。就<a href="http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html" rel="nofollow noreferrer">^{<cd1>}</a>而言,该文件只是一个平面缓冲区。在</p>
<p>我建议使用<a href="http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.save.html" rel="nofollow noreferrer">^{<cd2>}</a>来持久化numpy数组,因为这也保留了指定其维度、数据类型等的元数据。您还可以通过将<code>memmap_mode=</code>参数传递给<a href="http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.load.html" rel="nofollow noreferrer">^{<cd5>}</a>来将<code>.npy</code>文件加载为memmap。在</p>
<p><a href="https://pythonhosted.org/joblib/generated/joblib.dump.html" rel="nofollow noreferrer">^{<cd6>}</a>结合使用pickling来存储泛型Python对象,<code>np.save</code>来存储numpy数组。在</p>
<hr/>
<p>要初始化由<code>.npy</code>文件支持的空内存映射数组,可以使用<code>numpy.lib.format.open_memmap</code>:</p>
<pre><code>import numpy as np
from numpy.lib.format import open_memmap
# initialize an empty 10TB memory-mapped array
x = open_memmap('/tmp/bigarray.npy', mode='w+', dtype=np.ubyte, shape=(10**13,))
</code></pre>
<p>您可能会惊讶于这样一个事实:即使阵列大于总可用磁盘空间</em>(我的笔记本电脑只有500GB的SSD,但我刚刚创建了一个10TB的memmap)。这是可能的,因为创建的文件是<a href="https://stackoverflow.com/a/34029352/1461210">sparse</a>。在</p>
<p>发现<code>open_memmap</code>的功劳应归于<a href="https://stackoverflow.com/a/4620395/1461210">kiyo's previous answer here</a>。在</p>