xarray 笔记:DataArray

本文详细介绍了xarray库中的DataArray对象,它是一个带标签的多维数组,支持维度和坐标的概念,便于数据操作和管理。DataArray的创建可以指定数据、坐标、维度和属性。坐标可以是基于标签的快速索引,可以通过多种方式创建。此外,还展示了如何通过pandas对象创建DataArray,并列举了DataArray的基本属性及其用法。
摘要由CSDN通过智能技术生成

1 DataArray介绍

xarray.DataArray 是一个使用标签的多维数组

1.1 DataArray 的关键数组

比如一个DataArray是这样的:

values

保存数组值的numpy.ndarray

dims

每个坐标轴的维度名称 (例如, (‘x’, ‘y’, ‘z’))

 

coords

一个包含数组坐标的类似字典的容器,用来标记每个点(例如,数字,日期时间对象或字符串的一维数组)

 

attrs存放任意元数据(属性)的字典
  • xarray使用dimscoords来实现其核心元数据的感知操作。
    • 维度(Dimensions)提供xarray使用的名称,而不是许多numpy函数中的axis参数。 
    • 坐标(Coordinates)基于pandas的DataFrameSeries上的索引(index)功能,可实现基于标签的快速索引和对齐。

2 Data Array的创建

创建一个Data需要的参数有:

data包含值的多维数组(例如一个numpy ndarraySeriesDataFramepandas.Panel

coords

(可选参数)

一个包含坐标的列表或字典。

如果是列表,则应为元组列表,其中第一个元素是维名称,第二个元素是对应的坐标类似array的对象。

dims

(可选参数)

包含维名称的列表。

如果省略,并且coords是包含元组的列表,则维度名称取自coords

attrs

(可选参数)

添加到实例的属性字典

name

(可选参数)

命名实例的字符串
from xarray import *
import numpy as np

data = np.random.rand(4, 3)
    
locs = ['IA', 'IL', 'IN']

times = pd.date_range('2000-01-01', periods=4)

foo = DataArray(data, coords=[times, locs], dims=['time_0', 'space_0'])

foo

注:维度必须与data的实际维度一致,按照data.shape的顺序一个一个摆。

 2.1 坐标

2.1.1 没有显示指定坐标

如果没有dim,那么会采取默认的坐标:dim_N

from xarray import *

data = np.random.rand(4, 3)
    
locs = ['IA', 'IL', 'IN']

times = pd.date_range('2000-01-01', periods=5)

#foo = DataArray(data, coords=[times, locs], dims=['time_0', 'space_0'])

foo = DataArray(data)

foo

 

2.1.2 坐标创建方式

除了前面所说的和coord合用以及默认创建外,还有:

格式为(dims, data[, attrs])的元组

形式为{coord_name: coord}的字典,其中值的形式与列表相同。 

以字典的形式提供坐标,允许除了对应的维度的坐标以外的其他坐标

如果将coords作为字典提供,则必须显式提供dims

 

 2.2 用pandas.Series创建

 

 这时候已经有坐标轴了,可以直接用Series创建

 2.3 用DataFrame创建

a=pd.DataFrame([[1,2],[3,4]])

DataArray(a)

 3 DataArray 属性

3.1 基本属性值

Data Array的data值

from xarray import *
import numpy as np

data = np.random.rand(4, 3)
    
locs = ['IA', 'IL', 'IN']

times = pd.date_range('2000-01-01', periods=4)

x=DataArray(data, coords=[('time', times), ('space', locs)])
x.values

data 值

x.dims
x.coords
x.attrs
x.name

3.2 索引坐标值

x['time'] 和 x.coords['time'] 是等价的

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值