1
我目前使用Python後處理來自我編寫的C++程序的一些結果。數據存儲在csv文件中。這裏是數據文件的格式:使用Python導入數據文件和後期處理
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比較陌生。我會非常感謝任何反饋/指針,我要去哪裏錯了。
「我」的價值和它在哪裏設置? – crayzeewulf