[英]python 3D numpy array time index
有没有一种方法可以在第三维上使用某种形式的时间索引(日期时间等)来为三维数组建立索引?
我的问题是我正在对几千个雷达图像进行时间序列分析,因此我需要获取例如月平均值。 但是,如果我只是简单地对第3维中的每31个数组求平均值,则由于较短的月份和缺少数据等原因而导致计算不准确。
您可以使用pandas模块。 它支持按日期/日期时间范围编制索引。 它还支持多重索引,使您能够以2D方式处理多维数据。
>>> rng = pd.date_range('1/1/2016', periods=100, freq='D')
>>> rng[:5]
DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05'], dtype='datetime64[ns]', freq='D')
>>> ts = pd.Series(np.random.randn(len(rng)), index=rng)
>>> ts.head()
2016-01-01 0.119762
2016-01-02 -0.010990
2016-01-03 0.226537
2016-01-04 -0.087559
2016-01-05 0.484426
Freq: D, dtype: float64
>>> ts.resample('M').mean()
2016-01-31 -0.171578
2016-02-29 0.055878
2016-03-31 -0.243225
2016-04-30 -0.015087
Freq: M, dtype: float64
检查以下一些详细信息:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.html http://pandas.pydata.org/pandas-docs/stable/timeseries.html http://pandas.pydata。组织/大熊猫-DOCS /稳定/ advanced.html
发布我使用的伪解决方案:
这里的问题是缺乏3D阵列数据(如卫星,雷达)的日期时间索引。 虽然在熊猫中有时间序列函数,但没有数组(据我所知)。
该解决方案之所以可行,是因为我使用的数据文件的日期时间名为“ 200401010000”,即“ yyyymmddhhMM”。
然后,您可以使用“ inx”的最小值和最大值将其映射为1天。 这为您提供了数组函数的开始-结束位置。
您还可以在错误的日期时间插入nans数组(即'inx'min max = nan),以便您的3d数组与实际日期时间的长度匹配。
评论您是否有Q,或者您知道此问题的更好的解决方案/包装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.