标签: rust-ndarray

Rust ndarray 数组的初等函数数学运算

我只是想为 Rust ndarray 进行基本数学运算(例如,sin、exp、log、sqrt ...)。但是,我没有从阅读 ndarray 的文档中找到任何有用的示例。

比如说:

extern crate ndarray;

use ndarray as nd;

fn main() {
    let matrix = nd::array![[1., 2., 3.], [9., 8., 7.]];
    let result = some_math(matrix);
    println!("{}", result)
}

fn some_math(...) {
    //Here I would like to do elementwise exp() and sqrt
    sqrt(exp(...))
    // Using f64::exp would fail.
}
Run Code Online (Sandbox Code Playgroud)

如何some_math高效地实施?我当然可以通过循环矩阵的元素来执行元素操作,但这听起来不太好,我不想这样做。

numpypython 中,这就是np.sqrt(np.exp(matrix)). 我的意思是 Rust 确实是一门很棒的语言,但是,即使是简单的代数也确实不方便(缺乏适当的生态系统)。


更新:有一个正在进行的ndarray拉取请求。如果这是接受的,那么你可以简单地做matrix.exp().sqrt()等等。

ndarray-doc 中有一个非常隐藏的页面,告诉我们如何进行此类数学运算。


一些相关问题:1 2

rust rust-ndarray

6
推荐指数
1
解决办法
1182
查看次数

什么是最有效的:对 ArrayBase 或 ArrayView 的引用?

我正在改进使用ndarraycrate 来操作数组的 Rust 代码库。我有一个问题,我在文档中找不到明确的答案。

ArrayView将 的实例作为参数传递给函数是否更有效,或者我应该使用对 an 的引用Array来代替?我的直觉是,由于ArrayView是数组的视图,因此在进行计算时,它仅传递数组的视图,并且不授予函数所有权(因此不复制)底层数据。

简而言之,从传递 的实例切换ArrayView到传递 的引用是否会带来任何速度增益Array

我的目标是避免无用的内存分配/重复,这在处理大型数组时可能会非常昂贵。

rust rust-ndarray

2
推荐指数
1
解决办法
445
查看次数

标签 统计

rust ×2

rust-ndarray ×2