【发布时间】:2018-04-18 20:48:41
【问题描述】:
我有一个大 (9.3 GB) .npy 文件,其中包含 (67000, 9, 128, 128) ndarray 中的 uint8 值。我使用np.save() 创建它,当使用x = np.memmap('file.npy', "uint8", shape=(67000, 9, 128, 128), mode="r") 加载它时,np.sum(x[0,0,:,0]) 返回 13783。“问题”是当我尝试使用np.load("file.npy") 加载它并运行相同的函数时,总和为 13768。
由于np.load() 将整个文件加载到内存中,我假设在其 ndarray 上计算的总和是正确的,而使用 memmap 加载的 ndarray 返回的总和是错误的,但为什么它们不同?如果这是一个阅读错误,那么总和应该是真的关闭了,那为什么它只减少了 15 ??!
我不知道为什么会这样。这不会影响我的计算每个人说,但它可能对其他任务很重要。
【问题讨论】:
-
你能用更小的数组重现这个问题,这样它就可以打印映射的版本和加载的版本了吗?
-
npy 文件有一个标题,但
memmap映射原始字节。