使Python代码更加紧凑和高效

2024-09-30 00:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它基本上加载了我在不同文件夹中的一些数据文件,取每个温度下每次重复的平均值,然后绘制结果。代码运行得很好,当我只有几组数据的时候就可以了。但是现在我有9种不同的温度,每种都有5个重复,我觉得代码太长了。有办法巩固吗?谢谢

import numpy as np 
import matplotlib.pyplot as plt

steps    = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/1st/Average_MSD.txt',usecols=[0])


# T = 303 K

msd303_1 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/1st/Average_MSD.txt',usecols=[1])
msd303_2 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/2nd/Average_MSD.txt',usecols=[1])
msd303_3 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/3rd/Average_MSD.txt',usecols=[1])
msd303_4 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/4th/Average_MSD.txt',usecols=[1])
msd303_5 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/5th/Average_MSD.txt',usecols=[1])

msd303 = np.vstack((msd303_1,msd303_2,msd303_3,msd303_4,msd303_5)).T
msd303_mean = np.mean(msd303,axis=1)
msd303_std = np.std(msd303,axis=1)

# T = 313 K

msd313_1 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/313K/1st/Average_MSD.txt',usecols=[1])
msd313_2 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/313K/2nd/Average_MSD.txt',usecols=[1])
msd313_3 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/313K/3rd/Average_MSD.txt',usecols=[1])
msd313_4 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/313K/4th/Average_MSD.txt',usecols=[1])
msd313_5 = np.loadtxt('/home/aperego/data/HexaPaper/nvt/313K/5th/Average_MSD.txt',usecols=[1])

msd313 = np.vstack((msd313_1,msd313_2,msd313_3,msd313_4,msd313_5)).T
msd313_mean = np.mean(msd313,axis=1)
msd313_std = np.std(msd313,axis=1)


plt.yscale("log")
plt.xscale("log")
plt.plot(steps,msd303_mean)
plt.plot(steps,msd313_mean)

Tags: txthomedatanppltmeanaverageloadtxt
1条回答
网友
1楼 · 发布于 2024-09-30 00:38:34
np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/1st/Average_MSD.txt',usecols=[1])

既然你经常这样做,试着用

def load(pos):
    return np.loadtxt('/home/aperego/data/HexaPaper/nvt/303K/'+pos+'/Average_MSD.txt',usecols=[1])

然后使用msd303_1 = load('1st')。不是很大的进步,但更具可读性

相关问题 更多 >

    热门问题