Module rustlearn::array::dense
[−]
[src]
Basic two-dimensional dense matrix type.
Creation
An array of ones or zeros:
use rustlearn::prelude::*; let zeros = Array::zeros(20, 10); let ones = Array::ones(10, 10);
From a vector:
use rustlearn::prelude::*; let mut array = Array::from(vec![0.0, 1.0, 2.0, 3.0]); array.reshape(2, 2);
From a vector of vectors:
use rustlearn::prelude::*; let array = Array::from(&vec![vec![0.0, 1.0], vec![2.0, 3.0]]);
Getting and setting
use rustlearn::prelude::*; let mut array = Array::zeros(2, 2); array.set(0, 1, 1.0); *array.get_mut(1, 0) = 2.0; unsafe { array.set_unchecked(1, 1, 3.0); } assert!(allclose(&array, &Array::from(&vec![vec![0.0, 1.0], vec![2.0, 3.0]])));
Iteration
Over raw data:
use rustlearn::prelude::*; let array = Array::from(&vec![vec![0.0, 1.0], vec![2.0, 3.0]]); let sum = array.data().iter().fold(0.0, |sum, val| sum + val);
Over rows and columns:
use rustlearn::prelude::*; let array = Array::from(&vec![vec![0.0, 1.0], vec![2.0, 3.0]]); let mut sum = 0.0; for row in array.iter_rows() { for element in row.iter() { sum += element; } } sum = 0.0; for col in array.iter_columns() { for element in col.iter() { sum += element; } }
Elementwise operations
On both f32
and other Array
s, with both immutable and in-place variants.
use rustlearn::prelude::*; let array = Array::from(&vec![vec![0.0, 1.0], vec![2.0, 3.0]]); assert!(allclose(&array.add(&array), &array.times(2.0)));
Matrix multiplication
use rustlearn::prelude::*; let x = Array::from(vec![1.0, 2.0]); let y = Array::from(vec![3.0, 4.0]); let dot = x.dot(&y.T());
Structs
Array |
Basic two-dimensional dense matrix type. |
ArrayIterator |
Iterator over row or column views of a dense matrix. |
ArrayView |
A view into a row or column of an existing dense matrix. |
ArrayViewIterator |
Iterator over entries of a dense matrix view. |
ArrayViewNonzeroIterator |
Iterator over nonzero entries of a dense matrix view. |
Functions
allclose |
Determines whether two arrays are sufficiently close to each other. |
close |
Determines whether two floats are sufficiently close to each other. |