如何通过在 python xarray 中添加一个额外的维度来将一个数组拆分为多个数组?
How to split one array in multiple arrays by adding an extra dimension in python xarray?
我有以下 xarray
:
import xarray as xr
import numpy as np
import pandas as pd
da = xr.DataArray(np.random.rand(25, 6),
[('time', pd.date_range('2000-01-01', periods=25)),
('space', ['IA', 'IL', 'IN', 'VA', 'VL', 'VN'])])
其中 da.shape
产生 (25, 6)
.
我想将 25
拆分为 5
x5
以便我得到以下形式的 3D 形状:(5, 5, 6)
.
老实说,我不知道从哪里开始。我查阅了文档,但找不到任何解决方案。我知道我只寻求矢量化解决方案(即没有循环和 list.append()
东西,因为否则成本太高。
你能帮我解决这个问题吗?
更新:
使用 np.split(da, 5)
我设法在里面创建了一个 list
的 5 xarray
s,其中包含我需要的数据。我如何完成这一步,而不是转换为 list
,它保持 xarray
,但它有一个额外的维度?
我找到的解决方案是使用 np.resize
:
da_new = np.resize(da, (5,5,6))
其中(如预期)da_new.shape
产生 (5, 5, 6)
。这也相对较快。
我有以下 xarray
:
import xarray as xr
import numpy as np
import pandas as pd
da = xr.DataArray(np.random.rand(25, 6),
[('time', pd.date_range('2000-01-01', periods=25)),
('space', ['IA', 'IL', 'IN', 'VA', 'VL', 'VN'])])
其中 da.shape
产生 (25, 6)
.
我想将 25
拆分为 5
x5
以便我得到以下形式的 3D 形状:(5, 5, 6)
.
老实说,我不知道从哪里开始。我查阅了文档,但找不到任何解决方案。我知道我只寻求矢量化解决方案(即没有循环和 list.append()
东西,因为否则成本太高。
你能帮我解决这个问题吗?
更新:
使用 np.split(da, 5)
我设法在里面创建了一个 list
的 5 xarray
s,其中包含我需要的数据。我如何完成这一步,而不是转换为 list
,它保持 xarray
,但它有一个额外的维度?
我找到的解决方案是使用 np.resize
:
da_new = np.resize(da, (5,5,6))
其中(如预期)da_new.shape
产生 (5, 5, 6)
。这也相对较快。