我有以下代码:
n=1000
dset=np.fromfile(f,dtype='uint16',count=np.int64(n*dim_x*dim_y*dim_z*dim_c)
dset=np.reshape(dset,np.int64([n,dim_z,dim_y,dim_x,dim_c]))
尺寸就像
print dim_x,dim_y,dim_z,dim_c
1536 800 7 1
代码在n = 500时工作正常,但是n = 1000,我得
C:\ Users \ maximih \ AppData \ Local \ WinPython-64bit-2.7.9.4 \ python-> 2.7.9.amd64 \ lib \ site-packages \ numpy \ core \ fromnumeric.pyc in reshape(a, > newshape,order)
219除了AttributeError:
220返回_wrapit(a,' reshape',newshape,order = order)
- > 221 return reshape(newshape,order = order)
222个
223ValueError:新数组的总大小必须保持不变
我最初在github上发布这个问题,但是关闭了,因为我不确定....有人建议升级numpy但我已经在使用' 1.9.2'
我建议这是一些np.prod调用的溢出。这个函数确实溢出,我测试了,这就是为什么我试图明确地将产品转换为int64 .... 有什么建议吗?
由于 最大
答案 0 :(得分:1)
现在我加入了所有的人,这太愚蠢了,无法检查他们的数组大小(有些人会说当然,这是问题,我想)... np.fromfile不会抱怨,如果计数是>那么文件大小,所以我读了更少的数据,然后我想。