个人笔记--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) + "_")
相关推荐
岁月宁静4 分钟前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists1 小时前
《crafting interpreters》阅读笔记:p45-p45
python
silvamux_1 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
蒸蒸yyyyzwd2 小时前
kafka、redis、mysql不熟悉问题总结
笔记·八股
hgy89692 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
曲径海盗2 小时前
【Python 学习第 41 天】for 循环
python·学习笔记·编程入门
摇滚侠2 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
沧海一笑-dj2 小时前
【Python】Python学习笔记-模块与包
python·pip·模块·包·python包·python模块·包与模块
echome8882 小时前
Python 异常处理:try、else、finally 的正确搭配
开发语言·前端·python·异常处理·编程技巧
云和数据.ChenGuang2 小时前
Python 单继承与多继承深度剖析:从 MRO 到实战取舍
开发语言·人工智能·python·langchain