Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 1.74 KB

File metadata and controls

44 lines (33 loc) · 1.74 KB

vector 总和

![ndarray-badge]

这个ndarray箱子支持多种创建数组的方法 —— 该食谱主要专注std::Vecndarray::Array的创建,通过from_vec完成。把两个数组加在一起和把两个数字加在一起,没有什么不同。在数组上,使用&符号,能在一次算术运算中,阻止消耗数组的操作。没有&的话,数组会被消耗。

在第一个示例中,数组ab在 let 语句(z = a + b)中移动:。 在第二个示例中,数组cd不会移动,而是为w创建一个新的数组。在 vector 总和(w = &c + &d)之后,更新cd,对w值是没有影响的。另外,在打印c时按预期工作,打印b时出错,因为移动了。见两个数组的二元运算符更多细节。

extern crate ndarray;
use ndarray::Array;

fn main() {
  let a = Array::from_vec(vec![1., 2., 3., 4., 5.]);
  let b = Array::from_vec(vec![5., 4., 3., 2., 1.]);
  let mut c = Array::from_vec(vec![1., 2., 3., 4., 5.]);
  let mut d = Array::from_vec(vec![5., 4., 3., 2., 1.]);

  let z = a + b;
  let w =  &c + &d;

  let epsilon = 1e-8;
  for elem in z.iter() {
    let diff: f32 = *elem - 6.;
    assert!(diff.abs() < epsilon);
  }

  println!("c = {}", c);
  c[0] = 10.;
  d[1] = 10.;

  for elem in w.iter() {
    let diff: f32 = *elem - 6.;
    assert!(diff.abs() < epsilon);
  }

}