我有一年的卫星测量电子(仪器每4秒测量一次)。这种阵列被称为“电子”。我也有相应的datetime.datetime格式的时间(称为'time')。我想要平均电子数组,以获得每分钟的平均值,而不是每4秒。我想把它们放在一个新的数组'g‘中。然而,当我编写循环时,它变得非常慢。有没有办法让它更快?下面是我要做的:
import numpy as np
import spacepy.time as spt
import datetime as dt
year=2001
for month in range (1,13):
dmax=np.array([[31,28,31,30,31,30,31,31,30,31,30,31]]).T #number of days in a month
for day in range(1,dmax[month-1]+1):
for hour in range(24):
for minute in range(60):
D1=spt.Ticktock(dt.datetime(year, month, day, hour, minute, 0,0),'UTC').RDT #lower boundary of a minute
#here, spt is a spacepy.time, and '.RDT' returns GREGORIAN ORDINAL TIME.
D2=spt.Ticktock(dt.datetime(year, month, day, hour, minute, 59,999999),'UTC').RDT #upper boundary of a minute
mask=((time>D1)&(time<D2))
electrons_logic=electrons[mask]
k=(month-1)*dmax[month-1]*24*60+(day-1)*24*60+hour*60+(minute+1) #number of the minute in a year
g[k,0]=np.nanmean(electrons_logic)
有没有一种方法可以避免嵌套循环并使其更快?
也许有一种方法可以使用多处理/并行计算来使其更快?
https://stackoverflow.com/questions/50955427
复制相似问题