对于表示时间 - 纬度 - 经度的t-x-y
数组以及t-x-y
网格的值包含任意测量变量的位置,我怎样才能组合'对于给定时间条件,数组的x-y
个切片?
例如,如果伴随t
- 数组是1d日期时间列表,我如何找到月份等于1的x-y
网格的元素均值。如果{{1}只有10个元素,其中month = 1然后我想要一个t
数组。从这里我知道我可以(10, len(x), len(y))
在np.mean(out, axis=0)
网格中获得所需的平均值,其中x-y
是数组操作的结果。
out
的形状大约为t-x-y
,这是(2000, 50, 50)
个(50, 50)
个不同时间的值网格。假设唯一条件的数量(无论是按月或按年切片)是<<<<而不是2000
数组中的元素总数。
实现这一目标的最pythonic方法是什么?将使用许多数据集重复此操作,因此优选计算上有效的解决方案。我对python来说比较新(我甚至无法弄清楚如何创建一个示例数组供你测试)所以请随意推荐其他可能有用的模块。 (我看过Pandas,但它似乎主要处理1d时间序列数据......?)
修改
这是我作为示例数组所能做的最好的事情:
t
所以a是随机数据的数组,t是(比方说)你的数组代表一年中的几个月,在这种情况下只是简单的整数。在这个例子中,每个月有83个实例。我们如何分离出对应于t = 1时的>>> t = np.repeat([1,2,3,4,5,6,7,8,9,10,11,12],83)
>>> t.shape
(996,)
>>> a = np.random.randint(1,101,2490000).reshape(996, 50, 50)
>>> a.shape
(996, 50, 50)
>>> list(set(t))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
x-y
个切片(创建月度平均数据集)?
答案 0 :(得分:0)
(my)问题的一个可能答案,使用numpy.where
找到a的切片,其中t = 1:
>>> import numpy as np
>>> out = a[np.where(t == 1),:,:]
虽然这给了稍微混淆(至少对我来说)输出:
>>> out.shape
(1, 83, 50, 50)
但如果我们按照我需要的方式进行操作
>>> out2 = np.mean(np.mean(out, axis = 0), axis = 0)
将结果减少到预期的结果:
>>> out2.shape
(50,50)
任何人都可以改进这一点或在这里看到任何问题吗?