[英]How to extract coordinates from where the variable meets a criterion for a netCDF dataset with Python and xarray?
我有一个xarray DataArray对象da_criteria_daily
,它是从netCDF文件生成的。
<xarray.DataArray (time: 365, latitude: 106, longitude: 193)>
dask.array<shape=(365, 106, 193), dtype=bool, chunksize=(1, 106, 193)>
Coordinates:
* time (time) datetime64[ns] 2017-01-01 2017-01-02 ... 2017-12-31
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
它是一年范围内的每日数据。 变量是布尔类型。
我想获取该变量为True的特定日期的所有坐标(纬度,经度)值。
new_da = da_criteria_daily.where(da_criteria_daily==True, drop=True)
print(new_da)
我有:
<xarray.DataArray (time: 161, latitude: 106, longitude: 193)>
dask.array<shape=(161, 106, 193), dtype=float64, chunksize=(1, 106, 193)>
Coordinates:
* time (time) datetime64[ns] 2017-01-01 2017-01-02 ... 2017-12-31
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
xarray.DataArray是否有任何可用于从变量中检索坐标的函数?
您可以使用numpy来做到这一点:
numpy.argwhere(numpy.array(da_criteria_daily))
numpy.argwhere()
为您提供非零(True)元素的索引。 然后,您可以使用经度,纬度和时间坐标数组来获取真实值。
使用xarray的.where .where()
只会用nans替换不满足条件的值,也就是说,您的False值现在将是nans。 我不知道任何xarray的方法来获取某些值的坐标。 它将绝对有用,但是我想还没有人开发它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.