对于 t-x-y
表示时间-纬度-经度的数组并且t-x-y
网格的值包含任意测量变量,我如何x-y
为给定时间条件“分组”数组切片?
例如,如果伴随t
-array 是日期时间的一维列表,我如何找到x-y
月份等于 1 的网格的元素平均值。如果t
只有 10 个元素,其中月份 = 1,那么我想要一个(10, len(x), len(y))
数组。从这里我知道我可以通过网格np.mean(out, axis=0)
获得所需的平均值,数组操作的结果在哪里。 x-y
out
的形状t-x-y
近似为(2000, 50, 50)
,即不同时间(50, 50)
值的网格。假设唯一条件的数量(无论我是按月还是按年切片)<< 比数组2000
中的元素总数。t
实现这一目标的最蟒蛇方式是什么?此操作将在许多数据集上重复,因此首选计算效率高的解决方案。我对 python 比较陌生(我什至不知道如何创建一个示例数组供您测试),所以请随意推荐其他可能有帮助的模块。 (我看过 Pandas,但它似乎主要处理一维时间序列数据......?)
编辑:
作为示例数组,这是我能做的最好的事情:
>>> 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]
所以 a 是随机数据数组, t 是(比如说)代表一年中月份的数组,在这种情况下只是普通整数。在此示例中,每个月有 83 个实例。我们如何分离出对应于 t = 1 时的 83 个x-y
切片a
(以创建月平均数据集)?