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!
切片参数构造函数。
s![]
获取范围/切片/索引的列表,以逗号分隔,可选步长大小与范围以分号分隔。它被转换为&SliceInfo
实例。
看来您应该能够SliceInfo
自己手动创建一个对象,通过SliceInfo::new(idx)
(注意idx
必须是切片,而不是元组)。