如何获取具有动态形状的 Rust ndarray 切片?

The*_*lah 5 multidimensional-array rust tensor

我想使用 Rust 的ndarray库对张量(多维数组)进行切片,但问题是张量是动态成形的,并且切片存储在用户提供的变量中。

如果我预先知道维数,我希望我可以简单地执行以下操作,其中idx是用户提供的索引,x是 4 维张量:

// should give a 1D tensor as a view on the last axis at index `idx`
x.slice(s![idx[0], idx[1], idx[2], ..])  
Run Code Online (Sandbox Code Playgroud)

但是因为我事先不知道维度,所以我无法以idx这种方式手动解压并将其提供给切片宏s!

在 python 中,我可能会这样做,idx用户提供的元组在哪里:

# if `len(idx)` was 2 but `x.ndim` was 3, we could get a 1d tensor, of length `x.shape[-1]`
x[idx]  
Run Code Online (Sandbox Code Playgroud)

在 Rust 中执行此操作的正确方法是什么?numpy 用户的 ndarray仅显示如何使用给定的标量值来执行此操作s!

Cod*_*256 0

的文档s!说:

切片参数构造函数。

s![]获取范围/切片/索引的列表,以逗号分隔,可选步长大小与范围以分号分隔。它被转换为&SliceInfo实例。

看来您应该能够SliceInfo自己手动创建一个对象,通过SliceInfo::new(idx)(注意idx必须是切片,而不是元组)。