Satpy针对数据的低级容器是xarray.DataArray,在Satpy里称为Datasets。...这些对象不仅类似于numpy数组,而且还保留了数据的元数据和属性。...大多数情况下,用户可以像操作Numpy数组一样,对这些对象进行操作,但得留意元数据是否正常。 更多信息参考xarray.DataArray的说明。...更多信息参考dask和xarray的使用说明。 To uniquely identify DataArray objects Satpy uses DatasetID....: https://xarray.pydata.org/en/stable/generated/xarray.DataArray.html#xarray.DataArray [8] dask.array.Array
数据结构 xarray有两大数据类型:DataArray、Dataset。...里面包含各个坐标 attrs 获取原始数据的属性,比如变量的名字、单位等 Dataset Dataset可以简单的理解为由多个DataArray组成的集合,它有如下几个重要的属性 dims 获取维度的名字...xarray.open_dataarray()读取DataArray类型数据,即只能读取单个物理量。...# 取出ds中名为t2m的物理量,可以看到它的维度,坐标系,以及t2m有单位和名字两个属性 >>>ds['t2m'] xarray.DataArray 't2m' (time: 12, latitude...可以清晰的了解nc数据中的维度、坐标、物理量以及各种属性等信息。
对于xarray之前已经介绍过两期了,分别是数据结构及数据读取和数据索引。 这一期要介绍的功能是插值与掩膜。 这两个方法在数据处理中会经常用到,实用等级☆☆☆☆☆。...插值 xarray中对scipy的插值函数进行了进一步的封装,可以让我们方便的调用。 只需要对DataArray,DataSet使用interp()函数就可以实现插值了,就像索引一样简单。...不管是一维数据还是多维数据都可以轻松搞定。 下面是官方给出的例子,DataArray的时间维度总共有四个值[0,1,2,3]。 da.sel(time=3),索引时间维的值为3(12行)。...对任意的DataArray或者Dataset创建一个新的坐标,将海陆数据附给他。 根据海陆分布数据中海洋或者陆地的值来提取掩膜数据。...('50m')) # 加载分辨率为50的河流 ax.add_feature(cfeat.LAKES.with_scale('50m')) # 加载分辨率为50的湖泊 # 设置网格点属性
xarray (之前的 xray) 是一个开源的python库。通过提供 pandas 的核心数据结构N维变形功能,从而将 pandas 的标签数据功能应用到物理科学领域。...主要是想提供一个类似pandas并且能与pandas兼容的工具包来进行多维数组(而不是pandas 所擅长的表格数据)分析。采用的是地球科学领域广泛使用的自描述数据通用数据模型实现上述功能。...的一些属性: # 类似 pandas 操作,可以直接赋值改变值 In [8]: data.values Out[8]: array([[-1.295, 0.414, 0.277],...是 xarray.DataArray 对象的类字典容器,也可以认为这是一个多维的 DataFrame。...-0.01396 , -0.362543]]) Coordinates: * x (x) <U1 'a' 'b' Dimensions without coordinates: y 数据集中的变量可以有不同的类型甚至不同的维度
环境设置 依赖库 wrf-python metpy numpy xarray matplotlib cartopy 数据处理 数据读取 import numpy as np import xarray...] * units('m/s'), v[k, :, :] * units('m/s'), dx=dx, dy=dy ) # 将散度数组转为xarray.DataArray...函数 %%timeit # 直接从数据数组计算网格间距 dx, dy = metpy.xarray.grid_deltas_from_dataarray(u) # 计算散度 div = mpcalc.divergence...,特别是对于多层数据 方法二和方法三避免了循环,计算效率更高,方法二速度最快 代码简洁性: 方法三最为简洁,直接利用metpy的内置函数 方法二需要手动扩展维度 推荐方法: 对于新版本metpy,推荐使用方法三...避免循环可以显著提高计算效率,特别是处理多层数据时 计算结果可以通过xarray和matplotlib方便地进行可视化 参考资料 气象家园论坛讨论 Stack Overflow上的相关讨论 MetPy
以下文章来源于MeteoAI ,作者学前班大队长 对于xarray之前已经介绍过两期了,分别是数据结构及数据读取和数据索引。 这一期要介绍的功能是插值与掩膜。...这两个方法在数据处理中会经常用到,实用等级☆☆☆☆☆。 插值 xarray中对scipy的插值函数进行了进一步的封装,可以让我们方便的调用。...只需要对DataArray,DataSet使用interp()函数就可以实现插值了,就像索引一样简单。不管是一维数据还是多维数据都可以轻松搞定。...对任意的DataArray或者Dataset创建一个新的坐标,将海陆数据附给他。 根据海陆分布数据中海洋或者陆地的值来提取掩膜数据。...('50m')) # 加载分辨率为50的河流 ax.add_feature(cfeat.LAKES.with_scale('50m')) # 加载分辨率为50的湖泊 # 设置网格点属性
(day, lat, lon) float64 2.0 2.0 2.0 2.0 2.0 ... 2.0 2.0 2.0 2.0</u10 '2020-01-01' '2020-01-02' 二、数据存取和基本属性...(day: 2, lat: 4, lon: 4)> 16.给前一题的DataArray添加属性author:Heywhale da.attrs['author']='Heywhale' da xarray.dataarray...pressure (day, lat, lon) float64 ... 19.给前一题的Dataset添加数据集属性time:2022-05-17 data.attrs['time']='2022...Attributes: time: 2022-05-17 20.查看15题中Dataset的维度,坐标,变量,属性 print(data.dims) print('-----'*5) print...'temperature' (lat: 4, lon: 4)> 27.取出上一题ds下temperature变量中第二和第三天的的数据 ds['temperature'][1:3] xarray.dataarray
——(唐)元稹《离思五首·其四》 ” xarray 中的DataArray 和 Dataset 对象除了上节介绍过的直接手动创建之外,更多的情况下却是通过其他数据储存结构转换和存储在硬盘中的数据存储文件读取而来...arr = series.to_xarray() arr 运行结果 由于只有一个变量,所以转换的结果是 xarray 中的DataArray类型。...to_dataframe:将DataArray或Dataset对象转换为pandas.dataframe(数据框)。注意到DataArray对象名称与转换为数据框的名称一样都为a。...文件的后缀为.nc。Xarray 基于 netCDF 数据模型,因此磁盘上的 netCDF 文件直接对应于数据集对象。...Xarray 采用open_dataset / open_dataarray 函数读取NetCDF 文件,采用to_netcdf方法将数据写入文件。
xarray专题再次开讲,错过第一部分的可以先去补个课从xarray走向netCDF处理(一):数据结构及数据读取。...今天要介绍的就是xarray的索引功能,通过索引你可以对数据进行切片,从整体中提取你所关注的区域、高度或者时间。 索引核心方法 在xarray的官方文档中给出了如下几种索引方式 ?...索引演示 对如下数据进行索引演示:名为ds的DataSet,名为temp的DataArray,数据链接在文末。...根据位置索引 位置索引是最直接也是最简单的索引方式,但是位置索引只对DataArray有效,对DataSet无效。下面用两种不同方法获取相同的值。 1....通过数字索引 >>>temp[:,1,1] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125, 254.26143
简单读取然后存储即可 我们经常需要对大量的模型输出数据进行处理和分析。...为了更好地处理WRF模型输出数据(当然因为wrfout文件太大了!),我们经常需要批量提取其中的变量,并将提取的数据保存为NetCDF格式(.nc文件),这样可以方便我们后续的分析和可视化操作。..., method='cat') # 将变量添加到数据集 dataset[var] = var_data print(dataset) # # 转换 projection 属性的值为字符串...使用适用于 wrf-python 的 xarray 数据结构。将投影对象转换为字符串以便作为 NetCDF 属性使用。...将投影对象转换为字符串,以便可以将其作为 NetCDF 属性使用 :param xarray_array: xarray.DataArray :param mode: 文件打开模式,默认为
本来是作为一部分内容的,但是推送有字数限制。因此拆分为三个部分,每部分都是单独的内容,基本不影响阅读。 DataArray xarray.DataArray 是 xarray 库中带标签的多维数组。...:数字,日期或字符串1D数组) attrs:包含元数据信息 xarray 使用 dims 和 coords 实现核心的元数据操作。...基于 pandas 中 DataFrame 和 Series 的索引功能,坐标可进行更快速的索引和对齐操作。 DataArray 对象有 name 和 attrs 属性,attrs 包含了元数据信息。...通过属性可以获取 foo 数组中的变量信息: >> foo.dims ('dim_0', 'dim_1') >> foo.dim_0 xarray.DataArray 'dim_0' (dim_0:...abc (abc) object 'a' 'b' * xyz (xyz) object 'x' 'y' DataArray 属性 下面看一下 DataArray 数组的一些重要属性
以下文章来源于MeteoAI ,作者学前班大队长 xarray专题再次开讲,错过第一部分的可以先去补个课从xarray走向netCDF处理(一):数据结构及数据读取。...今天要介绍的就是xarray的索引功能,通过索引你可以对数据进行切片,从整体中提取你所关注的区域、高度或者时间。...索引核心方法 在xarray的官方文档中给出了如下几种索引方式 索引演示 对如下数据进行索引演示:名为ds的DataSet,名为temp的DataArray,数据链接在文末。...根据位置索引 位置索引是最直接也是最简单的索引方式,但是位置索引只对DataArray有效,对DataSet无效。下面用两种不同方法获取相同的值。 1....通过数字索引 >>>temp[:,1,1] xarray.DataArray 't2m' (time: 12)> array([249.14844, 256.4179 , 247.45125, 254.26143
操作符 加上 属性名称 , 才能访问 , 如 person.name ; 如果对象中有 几十上百 个属性 , 如果想要打印出所有的属性命令 , 就需要遍历操作了 ; 2、遍历对象的常用方法 对象的遍历...可以使用如下几种方法 : 使用 for…in 循环 遍历对象 使用 Object.keys() 遍历对象 的 属性名称 使用 Object.values() 遍历对象 的 属性值 使用 Object.entries...() 遍历对象 的 属性名称 + 属性值 键值对组合 ; 二、遍历对象 1、使用 for…in 循环 遍历对象 for…in 循环 既可以用于遍历数组 , 又可以用于遍历对象的可枚举属性 ; 代码示例...console.log(`Key: ${key}, Value: ${person[key]}`); } } 在 for…in 循环中 , 获取的是 对象的 属性名称...属性名 的字符串数组 , 传入的参数是 要遍历的对象 ; 得到 属性名 字符串数组后 , 可以使用 遍历数组的方法 , 如 forEach 方法 , 遍历该数组 , 打印出每个对象值 ; 完整代码示例
python语言作为一种高级语言提供了一个与这类地球科学数据提供了一个良好的交互环境基础,而由python语言编写的xarray包[1]则为该类数据的处理提供了良好的平台。...那有个问题便可以提出,为什么不直接使用numpy数组读取地球科学数据,而要使用xarray提供的读取方式?...数据结构 Xarray包提供了两种数据储存结构:DataArray类和Dataset类。...这里我们是用来处理地理数据的,那么我们就需要引入处理地理数据的专用包xarray以及配套需要的numpy和pandas包。...coords的大括号包含了具体的坐标参数。与 DataArray类似。要确保维度名称代表的数据的数目和坐标参数的数目相一致。 attrs的大括号包含了属性参数。与 DataArray类似。
但是在操作之前都会先将 DataArray 转换为 Dataset,从而保证数据的准确性。 一个数据集可以加载或写入netCDF 文件的特定组中。...读取编码数据 NetCDF 文件遵循一些编码 datetime 数组 (作为具有 'units' 属性的数字) 以及打包和解包数据约定。...DataArray.encoding 属性可以查看解码信息: ds_disk['y'].encoding 注意:除了索引外,管理变量的所有操作都会移除编码信息。...如果不指定编码信息的话,xarray 会使用默认的编码属性信息;如果指定的话,这会更有利于额外的处理操作,尤其是压缩操作。 当存储文件时,这些属性信息会保存为每一个变量的属性。..._FillValue:当保存 xarray 对象到文件时,xarray 变量中的 Nan 会映射为此属性包含的值。这在转换具有缺省值的浮点数为整数时就显得非常重要了。
坐标 坐标是存储在 DataArray 和 Dataset 的 coords 属性中的辅助变量。...xarray中的坐标有两种类型: 维度坐标 是名称和唯一的维度名称相同的1D数组(打印Dataset或 DataArray时 *号标记的变量)。...时用 - 标记): 说人话:即都可以通过类字典方法或属性的方式获取数据。...,'virtual' 层坐标是不会存储在 DataArray 和 Dataset 对象的 coords 属性中的,尽管打印时会显示出来。...因为在 Dataset 和 DataArray 对象中每个多索引层都可以通过 ‘virtual’ 坐标获取,它的名称不能与相同对象的其它层,坐标和数据变量的名称冲突。
import xarray as xr # 数据 f = '/home/mw/input/cru3546/cru_ts4.07.2021.2022.pre.dat.nc' # 打开数据集 ds = xr.open_dataset...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...'pre' ()> array(199) Coordinates: time datetime64[ns] 2021-01-16, 'lon': xarray.DataArray...matplotlib.cm.register_cmap(name=cname, cmap=cmap) 在东经126,北纬9的附近的小黑点就是最大值所在,格点数据放大看确实有点奇形怪状 还有对应的argmin
也提供了和 pandas 类似的标签索引的方法 (使用的 pandas.Index 钩子),使用 .loc 属性: >> arr.loc['2000-01-01':'2000-01-02', 'IN'...除了利用标签索引提取数据之外,也可以进行赋值操作: >> arr.loc['2000-01-01', ['IL', 'IN']] = np.random.rand(2) >> arr xarray.DataArray...isel_points 方法提供了类似 numpy 多列表索引数据 (比如:arr[[0, 1], [0, 1]]) 的方式: >> da = xr.DataArray(np.arange(36).reshape...原始数据是新对象的子集,而原数据中没有的数据用 Nan填充。 xarray 在执行合并多对象操作时会自动对齐。手动对齐能够提高效率。...使用 indexes 属性可以获取基索引。
Dataset xarray.Dataset 是和 DataFrame 相同的多维数组。这是一个维度对齐的标签数组(DataArray)的类字典容器。它用来展示NetCDF文件格式的数据。...:相应变量的 DataArray 类字典容器 coords:用于 data_vars 标记点的 DataArray 类字典容器,比如数字,datetime对象或字符串数组 attrs:包含任意元数据的...访问数据集中的字典可以获取任意类别的变量。然而,xarray正是利用了索引和计算之间的差异。坐标中表示的是常数/固定/独立的量,而数据中表示的是变化/测量/依赖的量。...为了方便操作,你可以想获取属性一样直接读取变量信息,但不能这样设置变量: >> ds.temperature xarray.DataArray 'temperature' (x: 2, y: 2, time...数据集转换 除了上述的类字典方法外, xarray 还有一些其它方法可以将数据集转换为其它对象。
领取专属 10元无门槛券
手把手带您无忧上云