微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除单个维度中任何 NA 的坐标 - python xarray

如何解决删除单个维度中任何 NA 的坐标 - python xarray

我有一个包含 3 个坐标、纬度、经度和时间的数据集。在我的分析中,时间轴上不能有任何缺失值(对于任何给定的纬度和经度对,时间序列上的所有值都应该是一个数字)。因此,如果沿时间轴至少有一个 NA(或至少使整个系列成为 NA),我会寻找一种方法从数据集中删除对 (lat,lon)。

数据集示例如下:

Out[107]: 
<xarray.DataArray 'tmp' (time: 4,lat: 3,lon: 6)>
array([[[       nan,0.05436337,0.23391456,0.51244852,0.42514332,0.2335593 ],[0.62059169,0.62898597,0.5293765,0.33062813,0.30996141,0.39869431],[0.55619471,0.68936606,0.21171338,0.89683576,0.16176406,0.74822855]],[[0.73992303,0.91800564,0.24862385,0.1742356,0.22463234,0.09875687],[0.2319994,0.14531623,0.72293203,0.4475784,0.65764422,0.98461684],[0.34965378,0.94495332,nan,0.65975544,0.16506345,0.2476436 ]],[[0.74008539,0.70552147,0.71469424,0.17502713,0.60169445,0.12387101],[0.98992485,0.35316655,0.42242635,0.66903901,0.63261312,0.99028592],[0.7503372,0.1480758,0.46847969,0.78745792,0.81341805,0.01111322]],[[0.57655263,0.82188197,0.01296615,0.46871847,0.79409789,0.86067005],[0.5350068,0.93970056,0.2482184,0.09425715,0.04223387,0.69450503],[0.1050176,0.05850025,0.96669352,0.2844037,0.01956352,0.60538931]]])
Coordinates:
  * time     (time) datetime64[ns] 2010-03-31 2010-06-30 2010-09-30 2010-12-31
  * lat      (lat) int32 -60 0 60
  * lon      (lon) int32 -180 -120 -60 0 60 120

生成类似数据集的代码

import pandas as pd,numpy as np,xarray as xr

ds = xr.Dataset({
    var: xr.DataArray(
        np.random.random((4,3,6)),dims=['time','lat','lon'],coords=[pd.date_range('2010-01-01',periods=4,freq='Q'),np.arange(-60,90,60),np.arange(-180,180,60)])
    for var in ['tmp']})

ds.tmp[0,0] = 0
ds.tmp[1,2,2] = 0

ds = ds.where(ds.tmp > 0)

干杯。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。