如何使用Python和xarray从变量满足netCDF数据集条件的位置提取坐标?

时间:2019-01-30 03:13:55

标签: python pandas netcdf python-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的任何可用于从变量中检索坐标的函数?

1 个答案:

答案 0 :(得分:2)

您可以通过numpy来做到这一点:

<com.your.package.Ennemy1 
    android:id="@+id/enemyId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

numpy.argwhere(numpy.array(da_criteria_daily)) 为您提供非零(True)元素的索引。然后,您可以使用经度,纬度和时间坐标数组来获取真实值。

使用xarray的numpy.argwhere()只会用nans替换不满足条件的值,即,您的False值现在将是nans。我不知道任何xarray的方法来获取某些值的坐标。它将绝对有用,但是我想还没有人开发它。