#数组 #多维 #切片 #多维数组

multiarray

处理多维数据的轻量级Rust库

4个版本

使用旧的Rust 2015

0.1.3 2015年9月30日
0.1.2 2015年9月30日
0.1.1 2015年9月30日
0.1.0 2015年9月30日

#2594 in 算法

Download history 25/week @ 2024-03-15 41/week @ 2024-03-22 70/week @ 2024-03-29 26/week @ 2024-04-05 35/week @ 2024-04-12 25/week @ 2024-04-19 25/week @ 2024-04-26 27/week @ 2024-05-03 28/week @ 2024-05-10 33/week @ 2024-05-17 31/week @ 2024-05-24 31/week @ 2024-05-31 18/week @ 2024-06-07 28/week @ 2024-06-14 30/week @ 2024-06-21 7/week @ 2024-06-28

88 每月下载量
candlelighter中使用

MIT/Apache

27KB
523

此库提供了创建和处理多维数组的方法。它基本上试图将 Box<[T]>, &[T]&mut[T] 通用到多个维度,并提供了一些方便的方法,允许您进行切片、创建低维切片、子采样或反转视图,甚至交换维度(例如,创建2D矩阵的转置视图)。

示例

在下面的示例中,您将看到如何创建一个3D数组及其两个视图(2D和1D)。

use multiarray::*;

let mut voxels = Array3D::new([3,4,5], 0); // 3x4x5 ints
voxels[[0,0,0]] = 1;
voxels[[1,2,3]] = 23;
voxels[[2,3,4]] = 42;
assert!(voxels[[1,2,3]] == 23);
let slice = voxels.eliminated_dim(1, 2);   // 2D slice
assert!(slice[[1,3]] == 23);
let lane = slice.eliminated_dim(1, 3);     // 1D lane
assert!(lane[1] == 23);

在这里,slice 是3D体积的2D切片(在y=2处),而 lane 是一个一维视图,它还充当ExactSize/DoubleEnded迭代器。


lib.rs:

此软件包提供了处理多维数据的数据类型。它基本上试图将 Box<[T]>, &[T]&mut [T] 通用到多个维度。作为副作用,它还支持具有非一维步长的数组。

示例

以下是一个3D数组的示例。创建了一个2D视图和一个1D视图来查看数据的一部分。

use multiarray::*;

let mut voxels = Array3D::new([3,4,5], 0); // 3x4x5 ints
voxels[[0,0,0]] = 1;
voxels[[1,2,3]] = 23;
voxels[[2,3,4]] = 42;
assert!(voxels[[1,2,3]] == 23);
let slice = voxels.eliminated_dim(1, 2);   // 2D slice
assert!(slice[[1,3]] == 23);
let lane = slice.eliminated_dim(1, 3);     // 1D lane
assert!(lane[1] == 23);

请注意,[usize; N]被用作索引。为了方便,一维情况也支持除了[usize; 1]之外,也支持usize作为索引,一维视图可以通过&[T]&mut[T]借用的切片,通过std::convert::{ From, Into }转换,并且也实现了IteratorExactSizeIteratorDoubleEndedIterator迭代器特性。

依赖项