我目前正在使用 Python 对我编写的 C++ 程序的一些结果进行后处理。数据存储在 csv 文件中。这是数据文件的格式:
0.1111111111
0,0,0
0.1111111111,-0.04001496601,-0.02504003688
0.2222222222,-0.0793835043,-0.04974652802
0.3333333333,-0.1171623362,-0.07381573872
0.4444444444,-0.1521229773,-0.09695208717
我有 4 个这样的数据文件。对于每个文件,我需要读取第一行,将其存储到变量中,然后读取其余行,将它们存储到数组中。这是我的做法(欢迎提出建议):
nGridPts = [10,100,1000,2000]
# Setting up lists for dx vector and L2 vector
dx = [0]*len(nGridPts)
L2 = [0]*len(nGridPts)
for nPts in nGridPts:
# Importing data
fname = './DataFiles/Hw2_'+str(nPts)+'pts.dat'
dx[i-1] = np.genfromtxt(fname,skip_footer=(nPts),usecols=0,dtype=float)
data = np.genfromtxt(fname,delimiter=',',dtype=float,skip_header=1)
# Separating data
x_n = data[:,0]
phi_n = data[:,1]
TE = data[:,2]
然后,我需要计算截断误差 (TE) 的 L^2 范数。这是在上述循环中完成的,如下所示:
sum = 0.0
for n in TE:
sum = sum + TE[n]**2*dx[i-1]
L2[i-1] = math.sqrt(sum)
但是,我得到的只是 sum = 0.0 和 L2 = 0.0。我已经打印出 TE[n] 和 dx[i-1] 的类型。结果是
TE[0] type =
<type 'numpy.float64'>
dx[0] type =
<type 'numpy.ndarray'>
这可能是一个简单的问题,但我似乎无法弄清楚。我对 Python 比较陌生。我将非常感谢任何关于我哪里出错的反馈/指示。