个人笔记--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) + "_")
相关推荐
李小星同志18 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c29 分钟前
MFC 使用细节
笔记·学习·mfc
鸽芷咕32 分钟前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
Jhxbdks42 分钟前
C语言中的一些小知识(二)
c语言·开发语言·笔记
子午43 分钟前
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
人工智能·python·cnn
风等雨归期1 小时前
【python】【绘制小程序】动态爱心绘制
开发语言·python·小程序
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
Adolf_19931 小时前
Flask-JWT-Extended登录验证, 不用自定义
后端·python·flask
冯宝宝^1 小时前
基于mongodb+flask(Python)+vue的实验室器材管理系统
vue.js·python·flask
叫我:松哥1 小时前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap