如何解决如何获取具有动态形状的 Rust ndarray 切片?
我想使用 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],..])
但是因为我不知道预先的维度,所以我不能以这种方式手动解包 idx
并将其提供给切片宏 s!
。
在 python 中,我可能会这样做 this way,其中 idx
是用户提供的元组:
# if `len(idx)` was 2 but `x.ndim` was 3,we could get a 1d tensor,of length `x.shape[-1]`
x[idx]
在 Rust 中执行此操作的正确方法是什么? ndarray for numpy users 仅显示如何使用给定 s!
解决方法
documentation for the s!
macro 说:
切片参数构造函数。
s![]
需要一个范围/切片/索引列表,用逗号分隔,用
由分号与范围分隔的可选步长。这是
转换为 &SliceInfo
实例。
看来您应该能够自己手动创建一个 SliceInfo
对象,通过 SliceInfo::new(idx)
(注意 idx
必须是一个切片,而不是一个元组)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。