2017-12-12 9 views
0

私はPythonで海洋データを扱っています。私は現在、x軸に時間、y軸に圧力、輪郭として温度の等高線プロットを作成しようとしています。今私は、データ自体から得た値でタイム配列をフォーマットしようとしています。私が持っているコードは、それに対応する時間を追加しないで、その年の日だけを生成します。データは毎日4回ずつ水柱のプロファイルから得られ、6時間ごとに分けられているため、毎日6時間、12時間、18時間を追加する方法が必要です。 1260のプロファイルがあり、iは各プロファイルのファイルに対応しています。日に日を追加する方法

import numpy 
from matplotlib import pyplot as plt 
import math 
from datetime import tzinfo, timedelta, datetime, time 
import time 

i = 1 
temp = numpy.zeros((1260, 1000)) 
pressure = numpy.zeros((1260, 1000)) 
time2 = numpy.zeros(1260) 
for i in range(1, 1260): 
    filename = '/Users/ryanschubert/InternProject/itp47final/itp47grd' + str(i).zfill(4) + '.dat' 
    if os.path.isfile(filename): 
     data = open(filename, "r") 
    else: 
     continue 
    depthcounter=-1 
    text = data.read() 
    data.close() 
    text = text.replace(' ', ',') #this line and the next 5 lines are 
    text = text.replace(' ', ',') #fixing formatting errors in the code 
    text = text.replace(' ', '') 
    text = text.replace('NaN', '-98') 
    text = text.replace(',,', ',') 
    text = text.split('\n') 
    for line in text: 
     depthcounter=depthcounter+1 
     if depthcounter == 1: 
      if i ==1: 
       words4 = line.split(',') 
       year = int(words4[0]) 
       doy = float(words4[1]) - 1 
       hour = int((doy - math.floor(doy))*24) 
       t = datetime(year=year, month=1, day=1, hour=hour,tzinfo=utc) + timedelta(days=int(doy)) 
       time1 = t.timetuple().tm_yday 
       timetemp = numpy.array([t + timedelta(days=j/4.) for j in xrange(1260)]) 
      else: 
       time2[i] = timetemp[i].timetuple().tm_yday 
       print(time2[i])` 

コードは現在、次のような値を返します。

102 
102.0 
102.0 
103.0 
103.0 
103.0 
103.0 
104.0 
104.0 
104.0 
104.0 
105.0 
105.0 
105.0 
105.0 
106.0 
106.0 
106.0 
106.0 
107.0 
107.0 
107.0 
107.0 

のように...

配列がそうで

102 
102.25 
102.5 
102.75 
103.0 
103.25 
103.5 
103.75 
104.0 

like-に見えるとなるように、私は今年の各前日に6時間を追加する助けを必要としています。

+0

「i」とは何ですか?これは機能の中にありますか?もしそうなら、あなたはどのようにその機能を適用していますか? – roganjosh

答えて

0

timedelta1/4.日を追加する代わりに、timedelta(hours=6)を追加することができます。

それ以外の場合は、0.25単位で時間を増やしたいと思っているので、単純にget goから浮動小数点数の配列を生成できます。

私のpython3のバージョンでは、timetuple().tm_ydayは浮動小数点数ではなく整数を返します。

関連する問題