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使用
dims
和coords
来实现其核心元数据的感知操作。- 维度(Dimensions)提供xarray使用的名称,而不是许多numpy函数中的
axis
参数。 - 坐标(Coordinates)基于pandas的
DataFrame
或Series
上的索引(index
)功能,可实现基于标签的快速索引和对齐。
- 维度(Dimensions)提供xarray使用的名称,而不是许多numpy函数中的
2 Data Array的创建
创建一个Data需要的参数有:
data | 包含值的多维数组(例如一个numpy ndarray ,Series ,DataFrame 或pandas.Panel ) |
coords (可选参数) | 一个包含坐标的列表或字典。 如果是列表,则应为元组列表,其中第一个元素是维名称,第二个元素是对应的坐标类似array的对象。 |
dims (可选参数) | 包含维名称的列表。 如果省略,并且 |
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} 的字典,其中值的形式与列表相同。 | 以字典的形式提供坐标,允许除了对应的维度的坐标以外的其他坐标 如果将
|
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的主要内容,如果未能解决你的问题,请参考以下文章