首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python 3D numpy数组时间索引

python 3D numpy数组时间索引
EN

Stack Overflow用户
提问于 2016-08-31 20:26:44
回答 2查看 879关注 0票数 1

有没有一种方法可以使用某种形式的时间索引(datetime等)来索引三维数组在三维空间?

我的问题是,我正在对数千个雷达图像进行时间序列分析,例如,我需要获得每月的平均值。然而,如果我简单地在第三维中平均每31个数组,那么由于较短的月份和缺少数据等原因,它会变得不准确。

EN

回答 2

Stack Overflow用户

发布于 2016-08-31 20:46:46

您可以使用pandas模块。它支持按日期/日期时间范围进行索引。它还支持多索引,这允许您以2D方式处理多维数据。

代码语言:javascript
复制
>>> 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.org/pandas-docs/stable/advanced.html

票数 1
EN

Stack Overflow用户

发布于 2016-10-28 16:35:54

发布我使用的psuedo解决方案:

这里的问题是缺乏3d阵列数据的日期-时间索引(即satillite,雷达)。虽然pandas中有时间序列函数,但没有数组(据我所知)。

这个解决方案是可行的,因为我使用的数据文件的名称中有日期-时间,例如'200401010000‘是'yyyymmddhhMM’。

  1. 构建包含所有数据的3d数组(位置缺少时间)。
  2. 使用数据文件列表(os.listdir)创建时间戳列表(长度与3d数组长度匹配)
  3. 使用时间戳(2)作为dfa索引创建dfa,并创建运行整数的列'inx‘(范围(0,len(数组)= integers = 3d数组的索引)
  4. 使用数据开始和结束时间以及已知的数据频率(不缺少日期时间)创建日期时间索引。使用这个作为索引创建一个新的dfb。(4)中的
  5. dfb与(3)中的dfa合并。Aka dfa现在有准确的datetime索引和'inx‘列,包含3d数组索引位置和nan在缺失数据时的索引。

使用这个,你可以重新采样df,例如1天,取'inx‘的最小值和最大值。这为您的数组函数提供了开始-结束位置。

您还可以在错误的日期时间插入nan数组(即'inx‘min max = nan),以便您的3d数组与实际日期时间的长度相匹配。

如果你有Q或者你知道这个问题的更好的解决方案/包,请发表评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39249639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档