#python三方库
Xarray 基本库学习
0. DataArray 和 dataset 对象
DataArray:是对单一对象的属性进行描述,相当于长方形
Dataset: 是对多个数据的属性进行描述,相当于长方体
1 . 创建 dataarray 和 dataset
import numpy as np
import xarray as xr
data = np.random.rand(2,3)
data_vars = {
"var1":(("x", "y"), np.random.rand(2,3)),
"var2":(("x", "y"), np.random.rand(2,3))
}, ## 不同对象坐标对应的属性
coords = {
"x":[1,2],
"y":[1,2,3]
}
da = xr.DataArray(data=data,coords=coords)
ds = xr.Dataset(data_vars = data_vars, coords = coords)
2. 取值
da["var1"] # 方法1
da.sel(x=0, y=0) # 基于坐标轴的标签或值
da.isel(x=0, y=0) # 基于坐标轴索引
da.values
3. 坐标维度、变量的增加、删除
# 增加新维度
da.assign_coords(z=[1]) #方法1 增加了z轴,并将当前da/ds作为z=1时的数据结构
da.coords["z"]=[1]
# 删除维度和变量
ds.drop("z"/"var1")
# 为DataArray增加变量: DataArray是对于单一对象的属性进行说明,属性不会增加
# 为Dataset增加变量
ds.assign(new_data_vars)
对 DataArray 或 Dataset 的某一维度的刻度进行增加
- 需要新建一个 dataset 或 DataArray 利用 4 小节中的
xr.concat()
函数进行对应维度的刻度值的合并从而实现维度的刻度值的增加
4. DataArray 和 Dataset 的合并
# 多个DataArray的合并
xr.merge([da1, da2]) # 适用于具有相同坐标轴的不同对象的合并。
xr.concat([da1, da2], dim="x") # 适用于不同维度值的同一对象的合并。
## 如果DataArray没有名字需要进行命名
da1.name = "da1"
da2.name = "da2"
## 如果所有维度长度都不相同,则上述合并会失败,需进行对齐
xr.align(ds1, ds2, ds3, join="outer") # 返回三个dataset对齐后的元祖
该类函数 join 变量的说明
在 xarray 的数据合并函数(如 merge
、combine_first
等)中,join
参数用于控制如何处理合并过程中出现的缺失值。具体来说,join
参数有以下几个可能的取值:
"outer"
:使用外连接,即保留所有出现在任何一个dataset中的坐标值,缺失值将用NaN填充。"inner"
:使用内连接,即只保留出现在两个dataset中都存在的坐标值。"left"
:使用左连接,即只保留出现在第一个dataset中的坐标值,缺失值将用NaN填充。"right"
:使用右连接,即只保留出现在第二个dataset中的坐标值,缺失值将用NaN填充。
默认情况下,join
参数的取值为"outer"
,即使用外连接。但是在不同的合并场景中,根据具体的需求可以选择其他不同的join
取值。