【问题标题】:How can I store an ndarray in a struct when ndarray::dimension::dim::Dim is private?当 ndarray::dimension::dim::Dim 是私有的时,如何将 ndarray 存储在结构中?
【发布时间】:2019-07-23 14:53:28
【问题描述】:

ndarray crate 的示例使用以下代码,其中Array::random 返回类型为ArrayBase<S, D>

let a = Array::random((hash_size, inp_dimensions), Uniform::new(0., 10.));

我想将结果存储在结构中,因此需要类型。编译器告诉我它期望ArrayBase<S, D> 的类型为ArrayBase<OwnedRepr<f64>, ndarray::dimension::dim::Dim>,但ndarray::dimension::dim::Dim 是私有的。

如何将这个数组存储在结构中?

【问题讨论】:

  • Dim 不是在 ndarray 前奏曲中公开重新导出的吗?
  • 谢谢,就是这样。我让我被编译器输出愚弄,然后看错了方向。此外,“再导出”类型对我来说是新的。 (我还在学习阶段)

标签: rust


【解决方案1】:

Dim 被重新导出到 crate 的根目录(参见re-exporting names with pub use)。 如有疑问,您可以按名称 search the crate's documentation 为该类型提供服务。

ndarray 中,您可能希望使用多个其他有用的类型别名而不是直接指定ArrayBase

  • Array<A, D>,等同于ArrayBase<OwnedRepr<A>, D>,明确表示一个拥有的数组。
  • Array2<A> 可以专门用于拥有的二维数组,因此已经定义了维度类型参数(还有Array1<A>Array3<A> 等)。

【讨论】:

  • 拥有一个拥有的数组比仅仅拥有一个数组有什么好处?
  • @PetrusTheron 该调查尚不清楚。数组是默认拥有的,除非你有一个切片,一个数组的引用,或者对于 ndarray,一个数组视图。也许您想提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
相关资源
最近更新 更多