将 numpy 内存映射保存到新文件并从该文件加载新内存映射会导致值发生变化

在这里,我设置了一个 numpy 内存映射并将值设置为其中一行


import numpy as np

numpyMemmap = np.memmap( 'test.npy', dtype=np.uint16, mode='w+', shape=(500 , 512))

numpyMemmap[34] = np.ones(512)

numpyMemmap[34]

输出


memmap([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

为什么价值观改变了?


为方便起见,这是一个重现错误的 colab notebook


https://colab.research.google.com/drive/1WiSkFYRI0l7mkhtQzxZZDXVFw-IzzGpS?usp=sharing



侃侃尔雅
浏览 71回答 1
1回答

qq_笑_17

如果你想 memmap 一个用 保存的数组numpy.save,你需要使用numpy.load, 而不是numpy.memmap:numpyMemmap2 = np.load('LocalMemmap.npy', mmap_mode='r+')使用numpy.memmap,您将 NPY 文件头解释为数组的一部分。(此外,您的原件test.npy实际上不是 NPY 文件格式。np.memmap不会生成 NPY 文件,就像它不会读取它们一样。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python