<p>问题是创建数组时,OWNDATA标志为False。您可以通过在创建数组时要求标志为True来更改:</p>
<pre><code>>>> a = np.require(np.memmap('bla.bin', dtype=int), requirements=['O'])
>>> a.shape
(10,)
>>> a.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
>>> a.resize(20, refcheck=False)
>>> a.shape
(20,)
</code></pre>
<p>唯一需要注意的是,它可能会创建数组并复制一个副本,以确保满足要求。在</p>
<p><strong>编辑到地址保存:</strong></p>
<p>如果要将重新调整大小的数组保存到磁盘,可以将memmap保存为.npy格式的文件,并在需要重新打开它并用作memmap时以<code>numpy.memmap</code>的形式打开:</p>
^{pr2}$
<p><strong>编辑以提供另一种方法:</strong></p>
<p>通过重新调整基本mmap的大小(a.base或.u mmap,以uint8格式存储)并“重新加载”memmap,您可以接近您所要查找的内容:</p>
<pre><code>>>> a = np.memmap('bla.bin', dtype=int)
>>> a
memmap([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> a[3] = 7
>>> a
memmap([0, 0, 0, 7, 0, 0, 0, 0, 0, 0])
>>> a.flush()
>>> a = np.memmap('bla.bin', dtype=int)
>>> a
memmap([0, 0, 0, 7, 0, 0, 0, 0, 0, 0])
>>> a.base.resize(20*8)
>>> a.flush()
>>> a = np.memmap('bla.bin', dtype=int)
>>> a
memmap([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
</code></pre>