【问题标题】:How to take a slice of a Rust ndarray with a dynamic shape?如何获取具有动态形状的 Rust ndarray 切片?
【发布时间】:2021-03-29 10:40:18
【问题描述】:

我想使用 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! 的标量值来实现

【问题讨论】:

    标签: multidimensional-array rust tensor


    【解决方案1】:

    documentation for the s! macro 说:

    切片参数构造函数。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-28
      • 2018-07-10
      • 1970-01-01
      • 2014-10-15
      • 2023-02-23
      • 2021-11-17
      • 2020-03-02
      相关资源
      最近更新 更多