Xarray 跨时间找到每个网格点的最大值
Xarray find maximum value for each grid point across time
我有以下 netcdf 文件,其中包含一个地区的每日降雨量(降水),我已将其作为 xarray 打开。
<xarray.Dataset>
Dimensions: (latitude: 500, longitude: 600, time: 120)
Coordinates:
* latitude (latitude) float32 -35.22 -35.17 -35.12 ... -10.38 -10.33 -10.28
* longitude (longitude) float32 10.27 10.32 10.38 10.43 ... 40.12 40.18 40.22
* time (time) datetime64[ns] 2022-01-01 2022-01-02 ... 2022-04-30
Data variables:
precip (time, latitude, longitude) float32 ...
Attributes: (12/15)
Conventions: CF-1.6
title: CHIRPS Version 2.0
history: created by Climate Hazards Group
version: Version 2.0
date_created: 2022-05-16
creator_name: Pete Peterson
... ...
reference: Funk, C.C., Peterson, P.J., Landsfeld, M.F., Pedreros,...
comments: time variable denotes the first day of the given day....
acknowledgements: The Climate Hazards Group InfraRed Precipitation with ...
ftp_url: ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CH...
website: http://chg.geog.ucsb.edu/data/chirps/index.html
faq: http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ
我想拉出每个网格点(即每个lat/lon点)的最大降水值。我需要最大值来保持其纬度、经度和时间属性,因为我将分析这些最大值出现的时间和地点。
我知道我可以使用以下方法跨时间在第一个网格点处获得最大值。但是我如何才能看到这个最大值出现的位置和日期?
ds1a.precip[:,0,0].max()
我真的很难为所有网格点执行此操作。非常感谢您的指导。
一般
Dataset.max
求最大值
Dataset.argmax
找到达到最大值的坐标。
两种方法都有可选参数dim
,用于指定在哪个维度上查找最大值。
在你的情况下,
ds1a.max(dim='time')
将 return 一个数据集,每个 latitude
和 longitude
以及
随时间变化的最大值
ds1a.argmax(dim='time')
将 return 达到此最大值的时间。
这是一个带有示例数据的可重现示例:
import xarray as xr
ds = xr.tutorial.open_dataset('air_temperature').load()
ds.max(dim='time')
ds.argmax(dim='time')
我有以下 netcdf 文件,其中包含一个地区的每日降雨量(降水),我已将其作为 xarray 打开。
<xarray.Dataset>
Dimensions: (latitude: 500, longitude: 600, time: 120)
Coordinates:
* latitude (latitude) float32 -35.22 -35.17 -35.12 ... -10.38 -10.33 -10.28
* longitude (longitude) float32 10.27 10.32 10.38 10.43 ... 40.12 40.18 40.22
* time (time) datetime64[ns] 2022-01-01 2022-01-02 ... 2022-04-30
Data variables:
precip (time, latitude, longitude) float32 ...
Attributes: (12/15)
Conventions: CF-1.6
title: CHIRPS Version 2.0
history: created by Climate Hazards Group
version: Version 2.0
date_created: 2022-05-16
creator_name: Pete Peterson
... ...
reference: Funk, C.C., Peterson, P.J., Landsfeld, M.F., Pedreros,...
comments: time variable denotes the first day of the given day....
acknowledgements: The Climate Hazards Group InfraRed Precipitation with ...
ftp_url: ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CH...
website: http://chg.geog.ucsb.edu/data/chirps/index.html
faq: http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ
我想拉出每个网格点(即每个lat/lon点)的最大降水值。我需要最大值来保持其纬度、经度和时间属性,因为我将分析这些最大值出现的时间和地点。
我知道我可以使用以下方法跨时间在第一个网格点处获得最大值。但是我如何才能看到这个最大值出现的位置和日期?
ds1a.precip[:,0,0].max()
我真的很难为所有网格点执行此操作。非常感谢您的指导。
一般
Dataset.max
求最大值Dataset.argmax
找到达到最大值的坐标。
两种方法都有可选参数dim
,用于指定在哪个维度上查找最大值。
在你的情况下,
ds1a.max(dim='time')
将 return 一个数据集,每个 latitude
和 longitude
以及
ds1a.argmax(dim='time')
将 return 达到此最大值的时间。
这是一个带有示例数据的可重现示例:
import xarray as xr
ds = xr.tutorial.open_dataset('air_temperature').load()
ds.max(dim='time')
ds.argmax(dim='time')