我有一个函数,它将数组作为输入并进行一些计算。现在我想使用np.savetxt或任何其他方式将返回值保存到文本文件中。。。在做这件事的时候,我犯了错误";应为1D或2D数组,而得到%dD数组"%"X.ndim(ValueError:应为1D或2D数组,得到的是0D数组,而不是
我定义了如下函数,现在我想将返回的z值保存到一个文件中,并希望稍后将其用于不同的任务
def cal(a,b,c)
z=a+b+c
return z
x=print(cal(a,b,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, b, 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
:可选。具有写入方法的对象。默认值为sys.stdout
flush
:可选。布尔值,指定输出是刷新(True
(还是缓冲(False
(。默认值为False
np.savetxt
将数组保存为文本。因此,要么将结果转换为列表,然后使用:
np.savetxt('test',[x])
或者简单地将结果保存到一个常规文本文件:
with open( 'file.py', 'w' ) as datafile:
datafile.write(x)
另一种流行的方法是酸洗。
还有几件事需要注意:
您需要在定义函数后使用:
。您应该使用x=cal(a,b,c)
,而不是将打印保存到变量中。