当它是一个数组时,如何将我的模拟结果放入 .txt 文件中?
How can I put my simulation result into a .txt file when it is an array?
我用这个脚本模拟了一个模型,现在我只想用文本文件中的符号 t1 替换 T1
如何将 T1 从数组更改为其他内容以便我可以替换它?
from pymodelica import compile_fmu
from pyfmi import load_fmu
# Import the plotting library
import matplotlib.pyplot as plt
import numpy as np
# Compile model
model_name = 'Testerequal'
mo_file = 'Testerequal.mo'
VDP_fmu = compile_fmu('Testerequal', compiler_options = {'extra_lib_dirs':'D:\JModelica.org-1.17\Testerequal'})
# Load model
vdpid = load_fmu(VDP_fmu, log_level=7)
res = vdpid.simulate(final_time=86400)
x0= res["int.y"]
t0= res["time"]
T1 = x0[40]
f = open('D:/JModelica.org-1.17/Testertwo/That.txt','r')
filedata = f.read()
f.close()
newdata = filedata.replace('t1',T1)
f = open('D:/JModelica.org-1.17/Testertwo/That.txt','w')
f.write(newdata)
f.close()
如果我没理解错的话,你想输出一个NumPy数组到一个文本文件中。在这种情况下,您可以使用:
np.savetxt('filename.txt', T1)
如果这不是您想要的,请告诉我。
问题是您试图用 numpy 浮点数替换字符串。
你的例子中的变量 x0 是一个 numpy 浮点数数组,因此 T1 是一个 numpy 浮点数。现在,当您尝试替换 t1 时,由于 T1 不是字符串,它会给您一个错误。如果你只想用t1的值代替t1,只需将其转换为字符串即可,即:
filedata.replace("t1", str(T1))
我用这个脚本模拟了一个模型,现在我只想用文本文件中的符号 t1 替换 T1
如何将 T1 从数组更改为其他内容以便我可以替换它?
from pymodelica import compile_fmu
from pyfmi import load_fmu
# Import the plotting library
import matplotlib.pyplot as plt
import numpy as np
# Compile model
model_name = 'Testerequal'
mo_file = 'Testerequal.mo'
VDP_fmu = compile_fmu('Testerequal', compiler_options = {'extra_lib_dirs':'D:\JModelica.org-1.17\Testerequal'})
# Load model
vdpid = load_fmu(VDP_fmu, log_level=7)
res = vdpid.simulate(final_time=86400)
x0= res["int.y"]
t0= res["time"]
T1 = x0[40]
f = open('D:/JModelica.org-1.17/Testertwo/That.txt','r')
filedata = f.read()
f.close()
newdata = filedata.replace('t1',T1)
f = open('D:/JModelica.org-1.17/Testertwo/That.txt','w')
f.write(newdata)
f.close()
如果我没理解错的话,你想输出一个NumPy数组到一个文本文件中。在这种情况下,您可以使用:
np.savetxt('filename.txt', T1)
如果这不是您想要的,请告诉我。
问题是您试图用 numpy 浮点数替换字符串。
你的例子中的变量 x0 是一个 numpy 浮点数数组,因此 T1 是一个 numpy 浮点数。现在,当您尝试替换 t1 时,由于 T1 不是字符串,它会给您一个错误。如果你只想用t1的值代替t1,只需将其转换为字符串即可,即:
filedata.replace("t1", str(T1))