python的库学习记录--xarray--结构概述

什么是DataArray

  • 带有标记或命名维度的多维数组。DataArray 对象向底层的“未标记”数据结构(如 numpy 和 Dask 数组)添加元数据,如维度名称、坐标和属性(定义如下)。如果设置了其可选的 name 属性,则它是一个命名的 DataArray。
  • DataArray 是 xarray 标记的多维数组的实现,它有几个关键属性:
    • values: a numpy.ndarray 保存一些数值
    • dims: 每一个维度的名称 (e.g., (‘x’, ‘y’, ‘z’))
    • coords: 一个类似字典类型的数组 (coordinates) that label each point (e.g., 1-dimensional arrays of numbers, datetime objects or strings)
    • attrs: 保存任意的字典数据,常用来表示一些附加的属性信息(dict to hold arbitrary metadata (attributes)
      python的库学习记录--xarray--结构概述_第1张图片

创建一个DataArray

一般需要四个部分:

  • data: a multi-dimensional array of values
  • coords : a list or dictionary of coordinates
  • dims:a list of dimension names.
  • atrs:a dictionary of attributes to add to the instance
  • name:a string that names the instance
    示例:
xr.DataArray(
    data,
    coords={
        "time": times,
        "space": locs,
        "const": 42,
        "ranking": ("space", [1, 2, 3]),
    },
    dims=["time", "space"],
)


python的库学习记录--xarray--结构概述_第2张图片
python的库学习记录--xarray--结构概述_第3张图片

  • 可以通过rename修改变量名称:
    python的库学习记录--xarray--结构概述_第4张图片
  • 通过del 删除变量或者coords
    python的库学习记录--xarray--结构概述_第5张图片

什么是Dataset

python的库学习记录--xarray--结构概述_第6张图片

  • 它被设计为 netCDF 文件格式的数据模型的内存表示形式。
  • 具有对齐维度的类似字典的 DataArray 对象集合。因此,可以在单个 DataArray 的维上执行的大多数操作都可以在数据集上执行。数据集具有数据变量(参见下面的变量)、维度、坐标和属性
  • 包括以下部分:
    • dims
    • data
    • coords
    • attrs
      在这里插入图片描述
      python的库学习记录--xarray--结构概述_第7张图片

创建一个Dataset

temp = 15 + 8 * np.random.randn(2, 2, 3)

precip = 10 * np.random.rand(2, 2, 3)

lon = [[-99.83, -99.32], [-99.79, -99.23]]

lat = [[42.25, 42.21], [42.63, 42.59]]

ds = xr.Dataset(
    {
        "temperature": (["x", "y", "time"], temp),
        "precipitation": (["x", "y", "time"], precip),
    },
    coords={
        "lon": (["x", "y"], lon),
        "lat": (["x", "y"], lat),
        "time": pd.date_range("2014-09-06", periods=3),
        "reference_time": pd.Timestamp("2014-09-05"),
    },
)

ds

python的库学习记录--xarray--结构概述_第8张图片

通过以下命令了解各个属性:

ds.data_vars
ds.coords
ds.attrs
ds.temperature

python的库学习记录--xarray--结构概述_第9张图片

  • 通过字典的格式来传递或者更新dataset:
ds = xr.Dataset()

ds["temperature"] = (("x", "y", "time"), temp)

ds["temperature_double"] = (("x", "y", "time"), temp * 2)

ds["precipitation"] = (("x", "y", "time"), precip)

ds.coords["lat"] = (("x", "y"), lat)

ds.coords["lon"] = (("x", "y"), lon)

ds.coords["time"] = pd.date_range("2014-09-06", periods=3)

ds.coords["reference_time"] = pd.Timestamp("2014-09-05")

python的库学习记录--xarray--结构概述_第10张图片

  • 要更改数据集中的变量,可以使用所有标准字典方法,包括values, items, __delitem__, get 和 update ()。请注意,使用 _ _ setitem _ _ or update 将 DataArray 或 Pandas 对象分配给 DataSet 变量将自动将数组与原始数据集的索引对齐。
  • 通过ds.copy(deep=True),实现复制所有的data
  • 通过drop_vars('name'),删除指定变量
    • ds.drop_vars("temperature")
  • 通过drop_dims(),删除维度
    • ds.drop_dims("time")
  • 通过rename(),修改变量的名称

ds.rename({"temperature": "temp", "precipitation": "precip"})

什么是Variable

  • 一个类 NetCDF 的变量,由描述单个数组的维度、数据和属性组成。变量和数字数组在功能上的主要区别在于对变量的数值运算实现了数组的维名广播。每个 DataArray 都有一个可以通过 arr.variable 访问的底层变量。但是,没有在 DataSetDataArray 之外完全描述变量。

python的库学习记录--xarray--结构概述_第11张图片

什么是Dimension

  • 在数学中,数据的维数是松散的自由度数。是所有点的集合,其中除了一个自由度以外,所有点都是固定的。我们可以认为每个维度轴都有一个名称,例如“ x 维度”。在 xarray 中,DataArray 对象的维度是其命名的维度轴,第 i 个维度的名称是 arr.dims [ i ]。如果创建的数组没有维度名称,则默认维度名称为 dim _ 0、 dim _ 1等。
    在这里插入图片描述

什么是Coordinate

  • 标记另一个 DataArray 的维度或维度集的数组。在通常的一维情况下,坐标数组的值可以松散地被认为是一维上的刻度标签。有两种类型的坐标数组: 维度坐标和非维度坐标(见下文)。可以从 arr.coord [ x ]中检索名为 x 的坐标。DataArray 可以比维度具有更多的坐标,因为单个维度可以由多个坐标数组标记。但是,只能将一个坐标数组指定为特定维度的维度坐标数组。因此,len (arr.dims) < = len (arr.coords)通常是。
    python的库学习记录--xarray--结构概述_第12张图片

什么是Dimension coordinate

  • 分配给 arr 的一维坐标数组,在 arr.dims 中同时使用名称和维度名称。维度坐标用于基于标签的索引和对齐,就像在熊猫身上找到的索引一样。数据框架或熊猫。系列。事实上,维度坐标使用熊猫。为引擎盖下的对象编制索引,以便进行有效的计算。在打印 DataArray 或 Dataset 时,维度坐标由 * 标记。

什么是Non-dimension coordinate

  • 一个分配给 arr 的坐标数组,在 arr.coords 中使用名称,但在 arr.dims 中不使用名称。这些坐标数组可以是一维的,也可以是多维的,它们对辅助标记非常有用。例如,在地球科学数据集中,当数据的物理坐标(如经纬度)与其逻辑坐标不同时,常常使用多维坐标。但是,没有索引非维度坐标,对利用索引的非维度坐标的任何操作都将失败。打印 arr.coords 将打印所有 arr 的坐标名称,并在括号中打印相应的维度。例如,coord _ name (dim _ name)123..

什么是Index

  • 索引是为有效选择和切片关联数组而优化的数据结构。Xarray 为维度坐标创建索引,这样沿着维度的操作会更快,而非维度坐标则不会被索引。在底层,索引是作为熊猫实现的。索引对象。与维度名称 x 关联的索引可以通过 arr.index [ x ]检索。通过构造,len (arr.dims) = = len (arr.index)
  • 要将坐标(或任何 DataArray)转换为实际的pandas类型,请使用 To _ Index ()方法:
  • ds["time"].to_index()

什么是name

  • 维度、坐标、 DataArray 对象和数据变量的名称可以是任何名称,只要它们是散列的。但是,最好使用 str 类型的名称。

什么是scalar

  • 根据定义,标量不是数组,当转换为数组时,它的维数为0。这意味着,例如,int、 floatstr 对象是“标量”,而 listtuple 不是。

什么是duck array

  • Duck 数组是表现得像 numpy 数组的数组实现。它们必须定义形状、 dtype 和 ndim 属性。要与 xarray 集成,还需要 _ _ array _ _、 _ _ array _ ufunc _ __ _ array _ function _ _ 协议。

参考如下:
https://xarray.pydata.org/en/v0.8.0/data-structures.html

你可能感兴趣的:(python,库学习,python,学习,numpy)