簡體   English   中英

結合兩個時間序列數據數組

[英]Combine two time series dataarray

我正在研究 2 個具有時間、緯度和經度維度的數據數組。

數據 1 看起來像:

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

兩個數據 arrays 中的“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)

如果你想沿着時間維度堆疊你的數據 arrays ,你可以簡單地做

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)

這是我的 output:

<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM