numpy reshape:当数组变得太大时,数组大小不兼容?

时间:2015-04-27 07:58:24

标签: python-2.7 numpy casting reshape

我有以下代码:

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个
     223

     

ValueError:新数组的总大小必须保持不变

我最初在github上发布这个问题,但是关闭了,因为我不确定....有人建议升级numpy但我已经在使用' 1.9.2'

我建议这是一些np.prod调用的溢出。这个函数确实溢出,我测试了,这就是为什么我试图明确地将产品转换为int64 .... 有什么建议吗?

由于 最大

1 个答案:

答案 0 :(得分:1)

现在我加入了所有的人,这太愚蠢了,无法检查他们的数组大小(有些人会说当然,这是问题,我想)... np.fromfile不会抱怨,如果计数是>那么文件大小,所以我读了更少的数据,然后我想。