python xarray 仅在特定日期对变量重新采样
python xarray resample variables only on specific dates
我有一个 Xarray 数据集,其中包含每日数据的不规则值。有时一天有两个值有时几天会有差距。
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00'),
Timestamp('2015-04-06 00:00:00')]
如果我应用 resample()
model.resample(time='1D').mean()
我最后得到
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-02 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-04 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00'),
Timestamp('2015-04-07 00:00:00')]
但我正在寻找这样的数据重采样
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00')]
在不向模型添加新时间的情况下,我有哪些选择可以在相同的日期获得 .mean() 值?我尝试在一个小样本中重现该问题:
value_1 = np.arange(0,7,1)
times = np.array(['2015-04-01', '2015-04-01', '2018-01-03', '2018-01-03', '2018-01-05', '2018-01-05', '2018-01-06'], dtype='datetime64')
time_ = xr.Dataset(
data_vars={'value': (('time'), value_1)},
coords={'time': times})
time_resample = time_.resample(time='1D').mean().sel(time=slice('2015-04-01', '2015-04-06'))
print(time_.time, time_resample.time)
<xarray.DataArray 'time' (time: 7)>
array(['2015-04-01T00:00:00.000000000', '2015-04-01T00:00:00.000000000',
'2018-01-03T00:00:00.000000000', '2018-01-03T00:00:00.000000000',
'2018-01-05T00:00:00.000000000', '2018-01-05T00:00:00.000000000',
'2018-01-06T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2015-04-01 2015-04-01 ... 2018-01-06 <xarray.DataArray 'time' (time: 6)>
array(['2015-04-01T00:00:00.000000000', '2015-04-02T00:00:00.000000000',
'2015-04-03T00:00:00.000000000', '2015-04-04T00:00:00.000000000',
'2015-04-05T00:00:00.000000000', '2015-04-06T00:00:00.000000000'],
dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2015-04-01 2015-04-02 ... 2015-04-06
您必须按 time
分组并应用函数均值。
time_groupby = time_.value.groupby('time').mean()
xarray 在这一点上与 pandas 非常相似。
我有一个 Xarray 数据集,其中包含每日数据的不规则值。有时一天有两个值有时几天会有差距。
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00'),
Timestamp('2015-04-06 00:00:00')]
如果我应用 resample()
model.resample(time='1D').mean()
我最后得到
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-02 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-04 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00'),
Timestamp('2015-04-07 00:00:00')]
但我正在寻找这样的数据重采样
[Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-04-03 00:00:00'),
Timestamp('2015-04-05 00:00:00'),
Timestamp('2015-04-06 00:00:00')]
在不向模型添加新时间的情况下,我有哪些选择可以在相同的日期获得 .mean() 值?我尝试在一个小样本中重现该问题:
value_1 = np.arange(0,7,1)
times = np.array(['2015-04-01', '2015-04-01', '2018-01-03', '2018-01-03', '2018-01-05', '2018-01-05', '2018-01-06'], dtype='datetime64')
time_ = xr.Dataset(
data_vars={'value': (('time'), value_1)},
coords={'time': times})
time_resample = time_.resample(time='1D').mean().sel(time=slice('2015-04-01', '2015-04-06'))
print(time_.time, time_resample.time)
<xarray.DataArray 'time' (time: 7)>
array(['2015-04-01T00:00:00.000000000', '2015-04-01T00:00:00.000000000',
'2018-01-03T00:00:00.000000000', '2018-01-03T00:00:00.000000000',
'2018-01-05T00:00:00.000000000', '2018-01-05T00:00:00.000000000',
'2018-01-06T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2015-04-01 2015-04-01 ... 2018-01-06 <xarray.DataArray 'time' (time: 6)>
array(['2015-04-01T00:00:00.000000000', '2015-04-02T00:00:00.000000000',
'2015-04-03T00:00:00.000000000', '2015-04-04T00:00:00.000000000',
'2015-04-05T00:00:00.000000000', '2015-04-06T00:00:00.000000000'],
dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2015-04-01 2015-04-02 ... 2015-04-06
您必须按 time
分组并应用函数均值。
time_groupby = time_.value.groupby('time').mean()
xarray 在这一点上与 pandas 非常相似。