如何解决如何将函数的返回值保存到文件
我有一个将数组作为输入并进行一些计算的函数。现在我想使用np.savetxt或其他方式将返回值保存到文本文件中...同时我收到错误消息“ Expected 1D or 2D数组,则改为%dD数组”%X.ndim) ValueError:预期为1D或2D数组,取而代之的是0D数组
我现在定义了如下函数,我想将返回的z值保存到文件中,并希望以后用于其他任务
def cal(a,b,c)
z=a+b+c
return z
x=print(cal(a,c))
np.savetxt('test',x)
有人可以提出解决方案吗...谢谢
解决方法
问题是您试图将print
结果保存到变量而不是函数结果中,请按如下所示编辑代码:
import numpy as np
def cal(a,b,c):
z=a+b+c
return z
a = [1,2]
b = [1,2]
c = [1,2]
x=cal(a,c)
np.savetxt('test',x)
这是生成的输出文件:
1.000000000000000000e+00
2.000000000000000000e+00
1.000000000000000000e+00
2.000000000000000000e+00
1.000000000000000000e+00
2.000000000000000000e+00
如果将三个列表作为参数传递给函数,它将返回一个1D数组,因此np.savetxt
可以正常工作。
有多种保存到.txt
文件的方法,在这种情况下,您必须格式化输出以遵守numpy
函数请求。在这里,您可以看到使用open
方法保存文件的示例:
with open('myfile.txt','w') as file:
file.write('myLineToWrite')
在写入后使用with
自动关闭文件。
您还可以使用print()
函数写入文件:
with open('myfile.txt','w') as myFile:
print(positionStr,file=myFile,flush=False)
这是因为print()
被定义为print(object(s),sep=separator,end=end,file=file,flush=flush)
,其中:
-
object(s)
:任意对象,并且任意数量。在打印之前将转换为字符串 -
sep='separator'
:可选。如果存在多个对象,请指定如何分离对象。默认值为' '
-
end='end'
:可选。指定末尾要打印的内容。默认值为'\n'
(换行符) -
file
:可选。具有write方法的对象。默认值为sys.stdout
-
flush
:可选。一个布尔值,指定输出是刷新(True
)还是缓冲(False
)。默认值为False
import org.springframework.transaction.annotation.Transactional;
将数组保存为文本。因此,要么将结果转换为列表,然后使用:
np.savetxt
或仅将结果保存到常规文本文件中
np.savetxt('test',[x])
另一种流行的方法是pickling。
还有两点需要注意:
您需要在函数定义后使用with open( 'file.py','w' ) as datafile:
datafile.write(x)
。您应该使用:
而不是将打印内容保存到变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。