xarray 笔记:DataArray

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xarray 笔记:DataArray相关的知识,希望对你有一定的参考价值。

1 DataArray介绍

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

1.1 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'] 是等价的

 

以上是关于xarray 笔记:DataArray的主要内容,如果未能解决你的问题,请参考以下文章

[Xarray] 1. 数据结构

xarray--一维空间绘图学习记录

如何将 xarray DataArray 与长度为 1 的维度与更大的数组对齐?

Python气象数据处理进阶之Xarray(7):读写文件

使用没有日期的时间作为 xarray 中的一维

将DataArray转换为numpy数组