我正在使用Python中的海洋学数据。我目前正在尝试在x轴上创建时间轮廓图,在y轴上创建压力,并将温度绘制为轮廓。现在我正在尝试使用从数据本身获得的值来格式化时间数组。我的代码只生成一年中的日期而没有添加相应的小时数。我需要一种方法来增加每天6小时,12小时和18小时,因为数据来自水柱的轮廓,每天运行4次,相隔6小时。有1260个配置文件,我对应于每个配置文件的文件。
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
依旧......
我需要帮助每年的前一天增加6个小时,以便数组看起来像 -
102
102.25
102.5
102.75
103.0
103.25
103.5
103.75
104.0
等等。
答案 0 :(得分:0)
您可以添加timedelta
,而不是添加1/4.
天timedelta(hours=6)
。
否则,因为你知道你希望你的时间以0.25
为增量增加,所以你可以简单地从get go中生成一个浮点数组。
请注意,在我的python3版本中,timetuple().tm_yday
返回一个整数,而不是浮点数。