如何将函数的返回值保存到文件

问题描述

我有一个将数组作为输入并进行一些计算的函数。现在我想使用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) 。您应该使用:而不是将打印内容保存到变量。