Rust ndarray, arithmeti c операций над собственными значениями - PullRequest
0 голосов
/ 27 февраля 2020

Я пытался понять, как работает использование собственных массивов. Поэтому я попытался написать эту функцию, и она не компилируется.

use ndarray::prelude::*;
fn add_arrays<T>(ar1 : &Array1<T>, ar2 : &Array1<T>) -> Array1<T>
    where T : Add+Sub+Div+Mul
{
    ar1 + ar2
}

Но я получаю эту ошибку:

binary operation `+` cannot be applied to type `ndarray::ArrayBase<ndarray::OwnedRepr<T>, ndarray::dimension::dim::Dim<[usize; 1]>>`

note: an implementation of `std::ops::Add` might be missing for `ndarray::ArrayBase<ndarray::OwnedRepr<T>, ndarray::dimension::dim::Dim<[usize; 1]>>`

Я хотел бы знать, что нужно сделать, чтобы сделать это

1 Ответ

1 голос
/ 27 февраля 2020

Вы должны использовать LinalgScalar trait

use ndarray::*;

fn add_arrays<T>(ar1: &Array1<T>, ar2: &Array1<T>) -> Array1<T>
where
    T: LinalgScalar,
{
    ar1 + ar2
}

fn main() {
    let a = array![1.0, 2.0];
    let b = array![3.0, 4.0];
    let c = add_arrays(&a, &b);
    println!("{:?}", c);
}
...