在Windows 7上,使用最新的numpy 1.13.3和PYTHON 3.5,如果我有一个名为points的数组,其形状为m x 6,dtype为float32。我可以将数组保存到“foo.txt”文件中,如下所示:
np.savetxt('foo.txt', points, fmt='%f %f %f %d %d %d')
但如果我跑
with open('foo.txt', 'w') as f:
np.savetxt(f, points, fmt='%f %f %f %d %d %d')
我收到了以下错误:
TypeError Traceback(最近一次调用最后一次) 〜\应用程序数据\本地\连续\ Anaconda3 \ LIB \站点包\ numpy的\ LIB \ npyio.py 在savetxt(fname,X,fmt,分隔符,换行符,页眉,页脚, 评论)1214试试: - > 1215 fh.write(asbytes(格式%tuple(row)+换行符))1216除TypeError:
TypeError:write()参数必须是str,而不是bytes
在处理上述异常期间,发生了另一个异常:
在()1中的TypeError Traceback(最近的最后一次调用) 打开('foo.txt','w')作为f: ----> 2 np.savetxt(f,points,fmt ='%f%f%f%d%d%d')3
〜\应用程序数据\本地\连续\ Anaconda3 \ lib中\站点包\ numpy的\ lib中\ npyio.py 在savetxt(fname,X,fmt,分隔符,换行符,页眉,页脚, 注释)1217引发TypeError(“数组dtype('%s')之间不匹配) 和“1218”格式说明符('%s')“ - > 1219%(str(X.dtype),格式))1220 if len(footer)> 0:1221页脚= footer.replace('\ n','\ n'+评论)
TypeError:数组dtype('float32')与格式不匹配 说明符('%f%f%f%d%d%d')
我错过了什么吗?
答案 0 :(得分:0)
此行为仅在Python 3中发生,并且取决于numpy的版本。
对于numpy的较早版本(1.14.0之前的版本),必须以wb
模式打开文件才能使用savetxt
写入字节。
在numpy 1.14.0或更高版本中,此问题已解决。问题中的示例按预期工作。