xarray的创建、取值、维度和变量的增减及其数据结构的合并

#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 的数据合并函数(如 mergecombine_first 等)中,join 参数用于控制如何处理合并过程中出现的缺失值。具体来说,join 参数有以下几个可能的取值:

  • "outer":使用外连接,即保留所有出现在任何一个dataset中的坐标值,缺失值将用NaN填充。
  • "inner":使用内连接,即只保留出现在两个dataset中都存在的坐标值。
  • "left":使用左连接,即只保留出现在第一个dataset中的坐标值,缺失值将用NaN填充。
  • "right":使用右连接,即只保留出现在第二个dataset中的坐标值,缺失值将用NaN填充。

默认情况下,join参数的取值为"outer",即使用外连接。但是在不同的合并场景中,根据具体的需求可以选择其他不同的join取值。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值