保存ndarray时的ValueError

时间:2013-10-08 09:43:04

标签: python-2.7 numpy

在Windows XP上工作时,我有一个形状为(300, 224, 256)的numpy ndarray,因此包含1700万个项目。它包含整数值。 当我尝试使用numpy.save保存此数组时,一切正常。但是,我需要处理数据,并在此流程中将其转换为float32。如果我这样做,我就不能再保存阵列了:

>>>myarray.dtype
dtype('int16')

>>>np.save('myfile.npy', myarray)

>>>np.save('myfile.npy', myarray.astype(np.float32))

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-1c817b31fd22> in <module>()
----> 1 np.save('myfile', myarray.astype(p.float32))

C:\Programme\Python27\lib\site-packages\numpy\lib\npyio.pyc in save(file, arr)
    409     try:
    410         arr = np.asanyarray(arr)
--> 411         format.write_array(fid, arr)
    412     finally:
    413         if own_fid:

C:\Programme\Python27\lib\site-packages\numpy\lib\format.pyc in write_array(fp, array, version)
    407     else:
    408         if isfileobj(fp):
--> 409             array.tofile(fp)
    410         else:
    411             # XXX: We could probably chunk this using something like

ValueError: 17203200 requested and 1004 written

我的第一个猜测是,我试图保存的网络驱动器用完空间。但事实似乎并非如此。任何人都可以指出我为什么会这样,为什么只有在使用float32时,以及我如何能够修复它?

2 个答案:

答案 0 :(得分:3)

我在googled附近a bit,似乎是你的硬盘空间不足或者出现了溢出错误。您是否尝试将其保存到本地硬盘?您是否尝试过大小​​为(300, 224, 255)的数组?尝试几个调整,看看你是否得到不同的结果。

答案 1 :(得分:1)

我知道这个问题有点老了,但每个人似乎都忽视了这个问题。即使您的命令是&#34; np.save(&#39; myfile.npy&#39;,myarray.astype(np.float32))&#34;,错误消息也会将命令报告为&#34; np .save(&#39; myfile&#39;,myarray.astype(p.float32))&#34;

由于p.float32不是一个dtype,这可能是由于一个错字造成的吗?