在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:ProgrammePython27libsite-packagesnumpylibnpyio.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:ProgrammePython27libsite-packagesnumpylibformat.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 时,以及我如何能够解决它?
我用谷歌搜索了一下,似乎要么是硬盘空间不足,要么是溢出错误。 您是否尝试过将其保存到本地硬盘驱动器? 您是否尝试过大小为 (300, 224, 255)
的数组? 尝试几个调整,看看你是否得到不同的结果。
我知道这个问题有点老了,但每个人似乎都忽略了一些东西。即使您的命令是"np.save('myfile.npy', myarray.astype(np.float32((",错误消息也会将该命令报告为"np.save('myfile', myarray.astype(p.float32((">
由于 p.float32 不是 dtype,这是否可能只是由拼写错误引起的?