我有一个大的(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 ??
我不知道为什么会这样。这不会影响我的计算 per say ,但它对其他任务可能很重要。
答案 0 :(得分:3)
numpy.memmap
用于将文件中的原始数据视为numpy数组。您的文件名是'file.npy'
,因此不是" raw"数据。它是一个NPY文件,它有一个包含有关存储在其中的数组的元信息的标题。
要对NPY文件进行内存映射,请使用mmap_mode
的{{1}}参数。