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

numpy reshape: incompatible array size, when array grows too big?

我有以下代码:

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 except AttributeError:
220 return _wrapit(a, 'reshape', newshape, order=order)
--> 221 return reshape(newshape, order=order)
222
223

ValueError: total size of new array must be unchanged

我最初将此作为问题发布在 github 上,但由于我不确定而关闭了....有人建议升级 numpy,但我已经准备好使用“1.9.2”

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

谢谢 最大值

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