Rust:使用 ndarray-linalg 和 ndarray crates 的问题
Rust: problem using ndarray-linalg & ndarray crates
我正在用 Rust 编写一个交叉编译库(可以在 IOS/Android/Linux/MacOS 上运行)。我正在使用 ndarray 来实现算法。
我需要计算 ArrayBase 的范数。我发现 ndarray-linalg 这是一个在 ndarray 的类型上实现了很多特征的板条箱。
但是我无法使用它:
// Cargo.toml
ndarray = { version = "0.15.1", default-features = true }
ndarray-linalg = {version = "0.13.1"}
// src/main.rs
use ndarray::*;
use ndarray_linalg::*;
fn main() {
let foo = ArrayBase::from(&[1,2,3]);
foo.norm_l2(); // produces error
//^^^^^^^ method not found in `&ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>`
}
所以我有两个问题:
- 如何解决这个问题并使这些方法在我的程序中可访问?
- 无论如何,使用这些箱子针对 android 和 IOS 架构进行编译是个好主意吗?
提前致谢。
ndarray-linalg
版本 0.13.1 需要 ndarray
版本 0.14。因此,您可以将 ndarray
版本降低到 0.14,在这种情况下您的代码可以工作,或者删除 ndarray-linalg
依赖项。如果您想继续使用 ndarray
0.15.1 并且只需要计算 L2 范数,那么自己在几行中实现它可能是最简单的。
ndarray
0.15 版仅在一周前发布,因此可能很快就会有支持它的 ndarray-linalg
版本。
ndarray-linalg
目前只支持x86_64
指令集
我正在用 Rust 编写一个交叉编译库(可以在 IOS/Android/Linux/MacOS 上运行)。我正在使用 ndarray 来实现算法。
我需要计算 ArrayBase 的范数。我发现 ndarray-linalg 这是一个在 ndarray 的类型上实现了很多特征的板条箱。
但是我无法使用它:
// Cargo.toml
ndarray = { version = "0.15.1", default-features = true }
ndarray-linalg = {version = "0.13.1"}
// src/main.rs
use ndarray::*;
use ndarray_linalg::*;
fn main() {
let foo = ArrayBase::from(&[1,2,3]);
foo.norm_l2(); // produces error
//^^^^^^^ method not found in `&ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>`
}
所以我有两个问题:
- 如何解决这个问题并使这些方法在我的程序中可访问?
- 无论如何,使用这些箱子针对 android 和 IOS 架构进行编译是个好主意吗?
提前致谢。
ndarray-linalg
版本 0.13.1 需要 ndarray
版本 0.14。因此,您可以将 ndarray
版本降低到 0.14,在这种情况下您的代码可以工作,或者删除 ndarray-linalg
依赖项。如果您想继续使用 ndarray
0.15.1 并且只需要计算 L2 范数,那么自己在几行中实现它可能是最简单的。
ndarray
0.15 版仅在一周前发布,因此可能很快就会有支持它的 ndarray-linalg
版本。
ndarray-linalg
目前只支持x86_64
指令集