ITADN
rafaqz/DimensionalData.jl
rafaqz/DimensionalData.jl · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

DimensionalData

CI Codecov Aqua.jl Quality Assurance

[!TIP] 请访问最新文档:https://rafaqz.github.io/DimensionalData.jl/dev/

DimensionalData.jl 提供了用于处理具有命名维度(可选地带有查找索引)的数据集的工具和抽象。它提供了零开销的命名索引抽象以及快速的索引查找。

DimensionalData 是 AxisArrays.jl 的可插拔、通用化版本,具有更简洁的语法,并包含在 NamedDims.jl 中发现的额外功能。其目标与 Python 的 xarray 相似,主要编写用于在 Rasters.jl 中处理空间数据。

安装

julia>]
pkg> add DimensionalData

快速入门

开始使用该包:

using DimensionalData

创建维度数组(DimArray)的基本语法是:

A = DimArray(rand(50, 31), (X(), Y(10.0:40.0)));

或者直接使用 rand,这对于 zerosonesfill 同样有效:

A = rand(X(10), Y(10.0:20.0))
╭───────────────────────────╮
│ 10×11 DimArray{Float64,2} │
├───────────────────────────┴──────────────────────────────── dims ┐
  ↓ X,
  → Y Sampled{Float64} 10.0:1.0:20.0 ForwardOrdered Regular Points
└──────────────────────────────────────────────────────────────────┘
 10.0       11.0       12.0        13.0       14.016.0       17.0       18.0        19.0       20.0
  0.71086    0.689255   0.672889    0.766345   0.00277696      0.773863   0.252199   0.279538    0.808931   0.783528
  0.934464   0.815631   0.815715    0.890573   0.158584        0.304733   0.936321   0.499803    0.839926   0.979722
  ⋮                                                        ⋱                                                ⋮
  0.935495   0.460879   0.0218015   0.703387   0.7564110.431141   0.619897   0.0536918   0.506488   0.170494
  0.800226   0.208188   0.512795    0.421171   0.492668        0.238562   0.4694     0.320596    0.934364   0.147563

[!NOTE] 按索引进行子集划分很简单:

A[Y=1:10, X=1]
╭────────────────────────────────╮
│ 10-element DimArray{Float64,1} │
├────────────────────────────────┴─────────────────────────── dims ┐
  ↓ Y Sampled{Float64} 10.0:1.0:19.0 ForwardOrdered Regular Points
└──────────────────────────────────────────────────────────────────┘
 10.0  0.130198
 11.0  0.693343
 12.0  0.40065617.0  0.877581
 18.0  0.866406
 19.0  0.605331

也可以通过查找进行子集化,使用 Selector,让我们尝试 At

A[Y(At(25))]
╭────────────────────────────────╮
│ 50-element DimArray{Float64,1} │
├────────────────────────── dims ┤
  ↓ X
└────────────────────────────────┘
  1  0.5318
  2  0.212491
  3  0.99119
  4  0.373549
  5  0.098739746  0.503611
 47  0.225421
 48  0.293564
 49  0.976395
 50  0.622586

此外,还有 Near(用于不精确/最近选择)、Contains(用于包含 Intervals 的值)、 Between.. 用于范围选择,以及 Where 用于查询等。

使用 Makie.jl 进行绘图非常简单:

using GLMakie, DimensionalData
boxplot(rand(X('a':'d'), Y(2:5:20)))

并且该图将具有正确的刻度线和标签。

有关更多详细信息,请参阅文档

[!NOTE] 最近的更改已大幅减少了导出的 API。

之前导出的方法可以通过 using 它们被移动到的子模块引入全局作用域 - LookupDimensions

using DimensionalData
using DimensionalData.Lookup, DimensionalData.Dimensions

替代软件包

在这个领域有许多类似的 Julia 软件包。AxisArrays.jl、NamedDims.jl、NamedArrays.jl 是已注册的替代方案,它们各自覆盖了 DimensionalData.jl 提供的部分功能。DimensionalData.jl 应该能够复制它们的大部分语法和功能。

AxisKeys.jlAbstractIndices.jl 是其他一些有趣的发展。有关为何存在如此多类似选项以及未来方向的更多细节,请阅读此 thread

主要功能在此处说明,但完整的功能列表 列于 API 页面。