合并两个时间序列数据数组
Combine two time series dataarray
我正在处理 2 个具有时间、纬度和经度维度的数据数组。
Data1 看起来像:
print (data1)
<xarray.DataArray (lon: 20, lat: 40, time: 2880)>
array([[[6.02970212, 4.49268718, 2.47512044, ..., 7.09662201,
0.34438006, 0.664115 ]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-07-30T23:30:00
Data2 看起来像:
print (data2)
<xarray.DataArray (lon: 20, lat: 40, time: 2880)>
array([[[1.60607837, 3.07589422, 6.26158588, ..., 6.95746878,
0.51368952, 1.45280591]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-08-01 ... 2017-09-29T23:30:00
两个数据数组中的“lon”和“lat”维度相似。 “时间”维度并非如此。
我想创建一个结合了 data1 和 data2 的新数据数组。所以新的数据数组 (data3) 看起来像:
print(data3)
<xarray.DataArray (lon: 20, lat: 40, time: 5808)>
array([[[4.82000138, 8.13537618, 2.39793625, ..., 2.03778308,
4.13311001, 5.57075556]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-09-29T23:30:00
有什么想法吗?
这是重新生成data1和data2的代码:
from datetime import timedelta
import xarray as xr
import numpy as np
precipitation = 10 * np.random.rand(20, 40, 2880)
lon = range(20)
lat = range(40)
time1 = np.arange('2017-06-01', '2017-07-31',
timedelta(minutes=30),dtype='datetime64[ns]')
time2 = np.arange('2017-08-01', '2017-09-30',
timedelta(minutes=30),dtype='datetime64[ns]')
data1 =xr.DataArray(
data=precipitation,
dims=["lon","lat","time"],
coords=[lon,lat,time1]
)
print (data1)
data2 =xr.DataArray(
data=precipitation,
dims=["lon","lat","time"],
coords=[lon,lat,time2]
)
print (data2)
如果你想沿着时间维度堆叠你的数据数组,你可以简单地做
data3 = xr.concat([data1, data2], dim="time")
这是您需要的片段:
time3 = np.concatenate((time1, time2), dtype='datetime64[ns]')
data3 = xr.DataArray(
data=10 * np.random.rand(20, 40, len(time3)),
dims=["lon", "lat", "time"],
coords=[lon, lat, time3]
)
print (data3)
这是我的输出:
<xarray.DataArray (lon: 20, lat: 40, time: 5760)>
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-09-29T23:30:00
我正在处理 2 个具有时间、纬度和经度维度的数据数组。
Data1 看起来像:
print (data1)
<xarray.DataArray (lon: 20, lat: 40, time: 2880)>
array([[[6.02970212, 4.49268718, 2.47512044, ..., 7.09662201,
0.34438006, 0.664115 ]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-07-30T23:30:00
Data2 看起来像:
print (data2)
<xarray.DataArray (lon: 20, lat: 40, time: 2880)>
array([[[1.60607837, 3.07589422, 6.26158588, ..., 6.95746878,
0.51368952, 1.45280591]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-08-01 ... 2017-09-29T23:30:00
两个数据数组中的“lon”和“lat”维度相似。 “时间”维度并非如此。 我想创建一个结合了 data1 和 data2 的新数据数组。所以新的数据数组 (data3) 看起来像:
print(data3)
<xarray.DataArray (lon: 20, lat: 40, time: 5808)>
array([[[4.82000138, 8.13537618, 2.39793625, ..., 2.03778308,
4.13311001, 5.57075556]]])
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-09-29T23:30:00
有什么想法吗?
这是重新生成data1和data2的代码:
from datetime import timedelta
import xarray as xr
import numpy as np
precipitation = 10 * np.random.rand(20, 40, 2880)
lon = range(20)
lat = range(40)
time1 = np.arange('2017-06-01', '2017-07-31',
timedelta(minutes=30),dtype='datetime64[ns]')
time2 = np.arange('2017-08-01', '2017-09-30',
timedelta(minutes=30),dtype='datetime64[ns]')
data1 =xr.DataArray(
data=precipitation,
dims=["lon","lat","time"],
coords=[lon,lat,time1]
)
print (data1)
data2 =xr.DataArray(
data=precipitation,
dims=["lon","lat","time"],
coords=[lon,lat,time2]
)
print (data2)
如果你想沿着时间维度堆叠你的数据数组,你可以简单地做
data3 = xr.concat([data1, data2], dim="time")
这是您需要的片段:
time3 = np.concatenate((time1, time2), dtype='datetime64[ns]')
data3 = xr.DataArray(
data=10 * np.random.rand(20, 40, len(time3)),
dims=["lon", "lat", "time"],
coords=[lon, lat, time3]
)
print (data3)
这是我的输出:
<xarray.DataArray (lon: 20, lat: 40, time: 5760)>
Coordinates:
* lon (lon) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
* lat (lat) int32 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
* time (time) datetime64[ns] 2017-06-01 ... 2017-09-29T23:30:00