个人笔记--python代码--储存数据

1. 存储Error(txt文件)

python 复制代码
import numpy as np

 # Error
 error_u = np.linalg.norm(exact_u_current - predict_np_u, 2) / np.linalg.norm(exact_u_current, 2)
 error_v = np.linalg.norm(exact_v_current - predict_np_v, 2) / np.linalg.norm(exact_v_current, 2)
 error_p = np.linalg.norm(exact_p_current - predict_np_p, 2) / np.linalg.norm(exact_p_current, 2)

 print('Error u: %e' % error_u)
 print('Error v: %e' % error_v)
 print('Error p: %e' % error_p)

 # 打开一个文件以追加写入模式
 with open('errors.txt', 'a') as file:
     file.write('\n')
     file.write('From t = %f to t = %f\n' % (t_current[0], t_current[-1]))
     file.write('Error u: %e\n' % error_u)
     file.write('Error v: %e\n' % error_v)
     file.write('Error p: %e\n' % error_p)
     file.write('\n')

这里的with open('errors.txt', 'a') as file:的'a'指的是追加模式 (append mode)。如果文件不存在,会创建一个新文件。如果文件存在,新的内容会被追加到文件的末尾,而不会覆盖原有内容。

而with open('errors.txt', 'w') as file:的'w'表示写入模式 (write mode)。如果文件不存在,会创建一个新文件。如果文件存在,原有内容会被清空,新的内容会覆盖原有内容。

2. 存储数值 (matlab文件)

python 复制代码
import os
import scipy.io

file_name = "./current_figures_matlab_data/"

if not os.path.exists(file_name):
    os.mkdir(file_name)

scipy.io.savemat(file_name + "Sol_" + params_name + "_" + str(pic_num) + ".mat",
                {'x': unique_x, 'y': unique_y, 't': t_current,
                 'exact_u_current': exact_u_current, 'predict_np_u': predict_np_u,
                 'exact_v_current': exact_v_current, 'predict_np_v': predict_np_v,
                 'exact_p_current': exact_p_current, 'predict_np_p': predict_np_p,
                 'exact_u_current_plot_final': exact_u_current, 'u_pred_plot_final': u_pred_plot_final,
                 'exact_v_current_plot_final': exact_v_current, 'v_pred_plot_final': v_pred_plot_final,
                 'exact_p_current_plot_final': exact_p_current, 'p_pred_plot_final': p_pred_plot_final})

储存为.mat文件,这样后期就可以直接在MATLAB画图或者做其他分析。

3. 储存loss数值 (csv文件)

python 复制代码
import numpy as np

def print_boundary_value_count(AM_count, current_t_num):
    np.savetxt("boundary_value/boundary_value_top" + params_name + "_" + str(current_t_num) + "_" + str(AM_count) + ".csv", model.boundary_value_top_collect, delimiter=',',
               header='x,y,pred,given')
    np.savetxt("boundary_value/boundary_value_bottom" + params_name + "_" + str(current_t_num) + "_" + str(AM_count) + ".csv", model.boundary_value_bottom_collect, delimiter=',',
               header='x,y,pred,given')
    np.savetxt("boundary_value/boundary_value_left" + params_name + "_" + str(current_t_num) + "_" + str(AM_count) + ".csv", model.boundary_value_left_collect, delimiter=',',
               header='x,y,pred,given')
    np.savetxt("boundary_value/boundary_value_right" + params_name + "_" + str(current_t_num) + "_" + str(AM_count) + ".csv", model.boundary_value_right_collect, delimiter=',',
               header='x,y,pred,given')

这里虽然是.csv文件,但是可以用excel打开,只需要在excel里全选把格式改一下就能看见数据。

或者用以下方式存储为.csv文件

python 复制代码
import pandas as pd

# 创建一个DataFrame来存储实际值和预测值
results = pd.DataFrame({
    'Actual': u_test,
    'Predicted': u_pred
})

# 将DataFrame保存为CSV文件
results.to_csv('predictions.csv', index=False)

4. 储存预测值 (excel文件)

python 复制代码
import pandas as pd

# 创建一个DataFrame来存储实际值和预测值
results = pd.DataFrame({
    'Actual': u_test,
    'Predicted': u_pred
})

# 将DataFrame保存为Excel文件
results.to_excel('predictions.xlsx', index=False)

5. 储存训练模型 (pt文件)

python 复制代码
 if model.save:
     torch.save(model.net.state_dict(), './models/' + params_name + "-" + str(i) + "-" + '.pt')

Note:

以上所有代码都是不完整的,部分是从我自己代码抽取出来整理的。只是提供一个思路。

作用只是为了我自己后期需要用到这个功能然后看一眼知道大概怎么处理而已。

代码出现很多的params_name是一个我自己创建的参数名称,用了argparse.ArgumentParser()。

python 复制代码
    params_name = ("_2D_" + str(args.PDE_type) + "_" + str(version_num) + "_ADAM=" + str(args.adam_iter) + "_LBFGS=" + str(args.lbfgs_iter)
                   + "_Nx=" + str(args.num_x) + "_Ny=" + str(args.num_y) + "_N=" + str(args.N) + "_M=" + str(args.M) + "_Mb=" + str(args.M_b)
                   + "_h=" + str(args.hid_layers) + "_n=" + str(args.hid_neurons) + "_ADAMlr=" + str(args.lbfgs_lr)
                   + "_modelType=" + str(args.model_type) + "_AMType=" + str(args.AM_type) + "_AMk=" + str(args.AM_K)
                   + "_AMCount=" + str(args.AM_count) + "_AWlr=" + str(args.AW_lr) + "_q=" + str(args.q)
                   + "_move_type=" + str(args.move_type) + "_init=" + str(args.init_cond)
                   + "_bound=" + str(args.boundary_cond) + "_ep=" + str(args.epsilon)
                   + "_Ld=" + str(args.L_d) + "_")
相关推荐
小han的日常10 分钟前
pycharm分支提交操作
python·pycharm
明月清风徐徐29 分钟前
Scrapy爬取豆瓣电影Top250排行榜
python·selenium·scrapy
theLuckyLong30 分钟前
SpringBoot后端解决跨域问题
spring boot·后端·python
Yongqiang Cheng33 分钟前
Python operator.itemgetter(item) and operator.itemgetter(*items)
python·operator·itemgetter
MavenTalk36 分钟前
Move开发语言在区块链的开发与应用
开发语言·python·rust·区块链·solidity·move
FksLiao1 小时前
Superset安装
python
L Jiawen1 小时前
【Python · PyTorch】卷积神经网络(基础概念)
pytorch·python·cnn
goomind1 小时前
深度学习模型评价指标介绍
人工智能·python·深度学习·计算机视觉
->yjy1 小时前
wordcloud库基本介绍
python
2401_840192271 小时前
python基础大杂烩
linux·开发语言·python