在将程序运行到文本文件并在其他模块中读取它们之后,我试图保存变量,以在原始程序中将其回调。重点是编写带有主程序4种不同结果的图。
尝试编码
#main program
a = array([[0.05562032, 0.05386903, 0.05216994, 0.03045489, 0.03029977,
0.03014554],
[0. , 0.00175129, 0.00345037, 0.15353227, 0.1536874 ,
0.15384163]])
#save paramaters in external file
save_paramaters = open('save.txt','w')
save_paramaters.write(str(a))
save_paramaters.close()
我在python模块中打开txt文件,并将其另存为变量,我手动进行了纠正(用逗号替换空格)
#new program
dat = "save.txt"
b = open(dat, "r")
c = array(b.read())
在主程序中,我现在使用
a = array([[0.05562032, 0.05386903, 0.05216994, 0.03045489, 0.03029977,
0.03014554],
[0. , 0.00175129, 0.00345037, 0.15353227, 0.1536874 ,
0.15384163])
#save paramaters in external file
save_paramaters = open('save.txt','w')
save_paramaters.write(str(a))
save_paramaters.close()
#open the variable
from program import c
from matplotlib.pyplot import figure, plot
#and try to plot it
plot(c[1][:], label ='results2')
plot(c[0][:], label ='results1')
File "/Example.py", line 606, in example
plot(c[1][:], label ='results2') #model
IndexError: too many indices for array
答案 0 :(得分:4)
如果您要保存一个数组,您不仅可以将其保存为文本,还需要python来解决。当您阅读它时,您将以文本(作为字符串)的形式阅读它,这就是程序所能知道的一切。
如果要保存复杂的对象,则还有其他几种选择:
假设您使用JSON。您保存这样的列表:
import json
with open('save.txt','w') as f:
json.dump(your_object, f)
就这么简单。要读回列表:
import json
with open('save.txt','r') as f:
your_new_object = json.load(f)
这很简单,不是吗?注意,我使用了with
语句来打开文件,以确保它们也能正确关闭,但这也更容易编写。使用泡菜非常相似,甚至具有相同的语法,但是对象被保存为字节而不是文本(因此,必须分别在文件上使用'rb'
和'wb'
模式进行读取和写入)。 / p>
要对numpy数组执行相同的操作,我们还可以使用numpy.save:
np.save('save', your_numpy_array)
然后我们将其读回(扩展名为npy
,并带有numpy.load:
your_array = np.load('save.npy')
就可读性而言,打开文件将是半可读的(比JSON少,比泡菜更多)