Crate ndarray_layout

Source
Expand description

# ndarray-layout

CI Latest version Documentation license codecov GitHub repo size GitHub code size in bytes

GitHub Issues GitHub Pull Requests GitHub contributors GitHub commit activity

ndarray-layout 是一个用于处理多维数组布局的 crate,它提供了 ArrayLayout 结构体,用于高效管理和操作多维数组的元信息,如形状、步长和偏移量等。这个库在处理多维数组时,提供了灵活且高效的布局管理方式,能够满足不同场景下对数组布局的操作需求。

§主要功能特点

§多维数组布局管理

  • ArrayLayout 结构体支持指定任意维度的数组布局,通过 new 方法可以创建具有指定形状、步长和偏移量的布局;
  • 提供 new_contiguous 方法,用于创建连续的数组布局,支持大端序(BigEndian)和小端序(LittleEndian)两种存储顺序;

§元信息访问

  • 提供便捷的方法来访问数组布局的元信息,如 ndimoffsetshapestrides 等;
  • 支持计算数组元素的偏移量和数据范围,方便进行内存访问和数据处理;

§布局操作功能

  • 提供多种布局变换方法,如 indextiletransposemergeslice 等,方便对数组布局进行各种变换操作;

§使用示例

use ndarray_layout::{ArrayLayout, BroadcastArg};

// 创建一个新的 `ArrayLayout` 实例。
// 形状为 [1, 2, 3],步长为 [12, 4, 1],偏移量为 0。
let layout = ArrayLayout::<3>::new(&[1, 2, 3], &[12, 4, 1], 0);

// 验证初始的形状和步长。
assert_eq!(layout.shape(), &[1, 2, 3]);
assert_eq!(layout.strides(), &[12, 4, 1]);
assert_eq!(layout.offset(), 0);

// 对第 0 维进行广播变换,广播次数为 4。
let broadcasted_layout = layout.broadcast(0, 4);

// 验证广播变换后的形状和步长。
assert_eq!(broadcasted_layout.shape(), &[4, 2, 3]);
assert_eq!(broadcasted_layout.strides(), &[0, 4, 1]);
assert_eq!(broadcasted_layout.offset(), 0);

Structs§

ArrayLayout
An array layout allow N dimensions inlined.
BroadcastArg
广播变换参数。
IndexArg
索引变换参数。
MergeArg
合并变换参数。
SliceArg
切片变换参数。
Split
切分变换参数。
TileArg
分块变换参数。

Enums§

Endian
元信息存储顺序。