坐标 坐标是存储在 DataArray 和 Dataset 的 coords 属性中的辅助变量。...事实上,这些维度坐标内部使用的是 pandas.Index 存储其值。 非维度坐标 是包含坐标数据的变量,但不是维度坐标。它们可以是多维的,而且非维度坐标名称和它的维度名称没有关系。...非维度坐标在绘图或索引时非常有用。除此之外, xarray 不会限制使用与其相关的值。它们不需要进行对齐或自动索引,也不需要在计算时进行匹配。 注: xarray 中的术语和 CF 中的术语不同。...,'virtual' 层坐标是不会存储在 DataArray 和 Dataset 对象的 coords 属性中的,尽管打印时会显示出来。...因为在 Dataset 和 DataArray 对象中每个多索引层都可以通过 ‘virtual’ 坐标获取,它的名称不能与相同对象的其它层,坐标和数据变量的名称冲突。
DataArray xarray.DataArray 是 xarray 库中带标签的多维数组。...基于 pandas 中 DataFrame 和 Series 的索引功能,坐标可进行更快速的索引和对齐操作。 DataArray 对象有 name 和 attrs 属性,attrs 包含了元数据信息。...>> xr.DataArray(data) xarray.DataArray (dim_0: 4, dim_1: 3)> array([[ 0.703916, 0.145702, 0.623297...在 V0.9之前,xarray会仿照这种方式:如果没有指定坐标参数的话,xarray会提供默认值。 以下方式可以指定坐标信息: 值列表和维度数大小相同,为每个维度提供坐标标签。...如果要对相同类型的数值进行操作的话,需要使用坐标或是分离DataArray对象为单个的Dataset。
数据结构 Xarray包提供了两种数据储存结构:DataArray类和Dataset类。...(seed=0) xr.DataArray类 xr.DataArray是一个容器,能够装一个变量的信息,比如可以把温度在时空的变化放在里面。...假如温度数据在时空上全为1,那么有 da = xr.DataArray( # 温度数据 np.ones((3, 4, 2)), # 维度名称 dims=("x", "y"...如果要创建一些在同一个坐标(Coordinates)上但有不同值的变量,我们不能采用简化的语法。...“x_b = array([-1, 0, 1, 2]) ” 变量a和变量b的维度都在x上,但对这个维度我们针对变量a和b分别建立了两个坐标 x_a 和 x_b ,那么 a 与 x_a
以上方法均是针对维度坐标变量。...会将 Dataset 或 DataArray 添加到响应维度的新坐标集。...xarray 在执行合并多对象操作时会自动对齐。手动对齐能够提高效率。...缺省坐标标签 每个维度的标签坐标是可选的。没有坐标标签时,基于标签的索引方法 sel 和 loc 使用标准的基于整数和位置的索引。...coordinates: x 如果两个 xarray 对象至少有一个没有坐标标签,只要有相同的维度名和大小,同样可以执行对齐操作。
安装 xarray的安装依旧推荐使用conda,还不会的小伙伴移步:一文教你解决Python所有安装配置 conda install xarray 在终端里输入如上命令,之后输入y,等待安装结束就好了...数据结构 xarray有两大数据类型:DataArray、Dataset。...里面包含各个坐标 attrs 获取原始数据的属性,比如变量的名字、单位等 Dataset Dataset可以简单的理解为由多个DataArray组成的集合,它有如下几个重要的属性 dims 获取维度的名字...xarray.open_dataarray()读取DataArray类型数据,即只能读取单个物理量。...# 取出ds中名为t2m的物理量,可以看到它的维度,坐标系,以及t2m有单位和名字两个属性 >>>ds['t2m'] xarray.DataArray 't2m' (time: 12, latitude
借鉴了 pandas 的索引机制,因此在索引时非常快。...xarray提供了四种索引方式: # 通过整数进行索引 In [12]: data[[0, 1]] Out[12]: xarray.DataArray (x: 2, y: 3)> array([[-...0.01396 , -0.362543]]) Coordinates: * x (x) <U1 'a' 'b' Dimensions without coordinates: y # 通过坐标标签索引..., -0.362543]]) Coordinates: * x (x) <U1 'a' 'b' Dimensions without coordinates: y # 利用维度名和坐标标签...是 xarray.DataArray 对象的类字典容器,也可以认为这是一个多维的 DataFrame。
version 2.14.1 平均 In [12]: all_mean_pre = ds.pre.mean() print('两年全球平均降水:', all_mean_pre) 两年全球平均降水: xarray.DataArray...time=slice('2021-01-16', '2021-12-16')).mean() print('2021年全球平均降水:', first_mean_pre) 2021年全球平均降水: xarray.DataArray...', '2021-12-16'),lat=32.75,lon=60.25).mean() print('2021年某格点平均降水:', point_mean_pre) 2021年某格点平均降水: xarray.DataArray...(dim=['lon','lat']) argmax Out[37]: {'lon': xarray.DataArray 'pre' (time: 24)> array([612, 641, 641...'pre' ()> array(199) Coordinates: time datetime64[ns] 2021-01-16, 'lon': xarray.DataArray
Dataset xarray.Dataset 是和 DataFrame 相同的多维数组。这是一个维度对齐的标签数组(DataArray)的类字典容器。它用来展示NetCDF文件格式的数据。...类字典容器 coords:用于 data_vars 标记点的 DataArray 类字典容器,比如数字,datetime对象或字符串数组 attrs:包含任意元数据的 OrderedDict 数据或坐标中变量的区别是语义上的...然而,xarray正是利用了索引和计算之间的差异。坐标中表示的是常数/固定/独立的量,而数据中表示的是变化/测量/依赖的量。 下面是如何为天气预测构造数据集的例子: ?...数据变量和坐标变量也分别包括在 data_vars 和 coords 类字典属性中: >> ds.data_vars Data variables: temperature (x, y,...虽然 xarray 不会强制限制属性设置,但是如果使用的不是 字符串,数字或 numpy.ndarray 对象,那么在序列化某些文件格式时仍可能会失败。
)) enable_xarray() # 方法b p_no_meta = getvar(ncfile, "P", meta=False) print (type(p_no_meta)) 从DataArray...中提取 numpy 数组 如果你需要将 xarray.DataArray 转换为 numpy.ndarray, wrf-python中的 wrf.to_np 函数可以帮助你完成这一操作。...尽管 xarray.DataArray 对象已经包含了 xarray.DataArray.values 属性用以提取 numpy 数组,但是用于编译扩展时仍会存在问题。...wrf.to_np 函数按照以下流程执行: 如果没有缺省值或填充值,那么将直接调用 xarray.DataArray.values 属性返回值 如果有缺省值或填充值,那么会用 xarray.DataArray.attrs...* key_0 (key_0) <U6 u'label1' u'label2' 插值 水平插值 wrf.interplevel 函数可以插值3D场到水平层上,通常是压力层或是高度层。
Satpy针对数据的低级容器是xarray.DataArray,在Satpy里称为Datasets。...See the XArray documentation for more info on handling xarray.DataArray objects....更多信息参考xarray.DataArray的说明。...卫星图像数据的坐标系有两种:原始卫星幅宽坐标系、均匀网格投影坐标 It is also common to see the channels from a single sensor in multiple...: https://xarray.pydata.org/en/stable/generated/xarray.DataArray.html#xarray.DataArray [8] dask.array.Array
用户API 方法 诊断 从WRF输出中返回基本诊断变量 插值 返回3D场插值到2D平面(指定垂直层)的值 坐标转换 返回经纬度坐标对应的X,Y坐标 网格去栅格 返回去栅格化后的变量,与NCL中的wrf_user_unstagger...函数效果相同 numpy 提取 返回 xarray.DataArray 实例中包含的 numpy.ndarray 数组 变量提取 从NetCDF文件或NetCDF文件对象序列中提取变量 辅助绘图 返回文件或是变量的地理边界...原始诊断方法 返回2D网格中一个线上的x,y点 配置方法 如果安装并打开了 xarray 则返回 True 其他 如果输入变量名是时间坐标则返回 True 类 异常 当诊断过程中发生错误是触发异常 CoordPair...装饰器 算法装饰器 从封装函数输出进行单位转换的装饰器 元数据装饰器 为封装函数的输出设置元数据的装饰器 装饰器工具 确定文件中包含哪个变量的可调用类 类 可迭代封装器类 一个生成器和自定义可迭代类的封装类...__iter__() 时会返回一个新的迭代器到序列的开头
插值 xarray中对scipy的插值函数进行了进一步的封装,可以让我们方便的调用。 只需要对DataArray,DataSet使用interp()函数就可以实现插值了,就像索引一样简单。...('space', [0.1, 0.2, 0.3])]) ...: # label lookup In [2]: da.sel(time=3) Out[2]: xarray.DataArray...int64 3 * space (space) float64 0.1 0.2 0.3 # interpolation In [3]: da.interp(time=2.5) Out[3]: xarray.DataArray...* space (space) float64 0.1 0.2 0.3 time float64 2.5 数据掩膜 日常数据处理中经常要用到掩盖陆地或者海洋数据,一种方法就是在画图的时候最后添加地理信息...对任意的DataArray或者Dataset创建一个新的坐标,将海陆数据附给他。 根据海陆分布数据中海洋或者陆地的值来提取掩膜数据。
+ y0) # 使用 pyproj.transform() 将这些网格坐标点从 WRF 模型的投影坐标系转换回经纬度坐标系(PlateCarree投影),结果存储在 our_lons 和 our_lats...数组 In [11]: # 创建xarray数据结构 t = xr.DataArray(z_target_grid, coords=[('lat', our_lats...= xr.Dataset({'temp': t}) ds_inter meteva 转换xarray为grid_data(meteva可以绘制的格式) In [12]: tnn =meb.xarray_to_griddata...(ds_inter) print(tnn) #对于da0里面的维度坐标名称为lon,lat,程序能够自动识别 *** xarray.DataArray 'data0' (member: 1, level...实际上在meteva的插值就使用了两种:最临近插值与双线性插值。效果好坏还需大家自行试验。 完整文件与代码在此
索引核心方法 在xarray的官方文档中给出了如下几种索引方式 索引演示 对如下数据进行索引演示:名为ds的DataSet,名为temp的DataArray,数据链接在文末。...通过数字索引 >>>temp[:,1,1] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125, 254.26143...通过标签索引 >>>temp.loc[:, 89.25, 0.75] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125...对DataArray和DataSet都有效,且方法一致。...def map(): # 创建画图空间 proj = ccrs.PlateCarree() #创建坐标系 fig = plt.figure() #创建页面 ax = fig.subplots
今天要介绍的就是xarray的索引功能,通过索引你可以对数据进行切片,从整体中提取你所关注的区域、高度或者时间。 索引核心方法 在xarray的官方文档中给出了如下几种索引方式 ?...通过数字索引 >>>temp[:,1,1] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125, 254.26143...通过标签索引 >>>temp.loc[:, 89.25, 0.75] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125...对DataArray和DataSet都有效,且方法一致。...def map(): # 创建画图空间 proj = ccrs.PlateCarree() #创建坐标系 fig = plt.figure() #创建页面 ax = fig.subplots
但有两点要注意: 为了简化序列化操作, xarray 在 dumping 对象之前会将数组中的所有值加载到内存中。因此这种方式不适用于大数据集。...xarray 基于 netCDF 数据模式,因此磁盘中的 netCDF文件和 Dataset 对象是对应的。 netCDF在大多数平台上都支持,因此科学程序语言几乎都支持解析 netCDF 文件。...但是在操作之前都会先将 DataArray 转换为 Dataset,从而保证数据的准确性。 一个数据集可以加载或写入netCDF 文件的特定组中。...从而允许xarray 以及其它工具能够正确的读取 netCDF 文件。...Rasterio 如果安装了 rasterio,可以使用 rasterio 打开GeoTiff以及其它栅格数据集。
从 GDS 加载数据 在加载本地数据文件前,首先使用 Meteva 内置的函数从 GDS 服务中获取要素场,用于后续对比验证。...使用 meb.xarray_to_griddata() 函数将要素场对象转为 meb.grid_data() 函数生成的 xr.DataArray 对象 可以看到,对于单个要素场,该函数自动生成了 memeber...维度,坐标值为 0 grid_data = meb.xarray_to_griddata( field, level_dim="pl", time_dim="time",...修改坐标值,与 t850_grid 保持一致: 添加 member 名称 将时间从世界时改为北京时 meb.set_griddata_coords( cropped_grid_data,...求偏差场中最大偏差 abs(diff_t850).max() 0.01001473 差值可能是因为压缩精度的问题,在可以接受的范围内。说明本地读取的 GRIB 2 文件可以代替 GDS 中的数据。
xarray 通过使用Groupby 算法使这些类型的转换变得容易。下面给出了计算去除月份温度差异的海温月数据。...da 此处创建 DataArray 类型 da 的方法与之前创建 DataArray 稍有不同。...两者创建的区别在于如果用列表创建 DataArray 的话,坐标名称和维度名称是重名的(Coordinates 项会加粗或者在名称前加*)。若要创建非索引坐标,则必须通过字典创建。...不同的 coords 之间的参数用逗号间隔,因为用列表创建坐标维度的特性,无需写坐标维度名称。坐标维度的名称将沿用维度名称的名字。...Tutorials进行改写,遵循Apache-2.0 License https://github.com/xarray-contrib/xarray-tutorial