我有一个numpy数组,我试图用python3保存,但是每次我尝试使用它时numpy.save()
都会崩溃。我需要做什么来保存这个数组?
我试了这个代码:
saveFilePath = Path(fc.selected,saveFolder,saveFileName+'.npy')
saveFile = open(saveFilePath,'w')
# THIS IS THE ERROR; it should be 'wb', not 'w'; see answer by hpaulj
np.save(saveFile,vz[key1][key2][key3])
字符串
其中saveFilePath和saveFile如下:saveFile & saveFilePath在重要的情况下,文件saveFile确实存在并且确实被创建,它应该在那里,并且它有0个字节(我期望失败的保存命令)。
出现以下错误:screencap of error Traceback
老实说,这没有意义,因为在前面的代码中,我使用相同的方法来保存不同的numpy数组。
我试过json.dump()
和pickle.dump()
,并得到错误,我宁愿不使用它们,因为其他问题带来的。
数组看起来像这样:
的数据
这应该是一个非常简单的保存,怎么回事?
1条答案
按热度按时间eh57zj3b1#
受我发现的旧帖子的启发,我尝试在“w”模式下打开文件,并得到了您的错误:
字符串
正确的保存和加载
型
你忽略了显示完整的错误消息,也没有告诉我们任何关于你试图使用的文件对象的信息。出于某种原因,你得出的结论是,问题出在你试图保存的数组上,而不是你试图保存它的文件上。
为什么
这个错误有点模糊,因为开发人员没有预料到用户会犯这个错误。当文件用“w”打开时,它的所有写入都应该是
str
,而不是byte(string)
。但是保存代码将头格式化为字节串。所以write
引发了这个错误。通常
np.save
会获取一个文件名,然后执行自己的open
。保存到一个已经打开的文件是允许的,但是它不会偏执到去验证打开的文件是否有正确的模式。