pub trait ArrayManipulate<N: Numeric>where
    Array<N>: Sized + Clone,{
    // Required methods
    fn insert(
        &self,
        indices: Vec<usize>,
        values: &Array<N>,
        axis: Option<usize>
    ) -> Result<Array<N>, ArrayError>;
    fn delete(
        &self,
        indices: Vec<usize>,
        axis: Option<usize>
    ) -> Result<Array<N>, ArrayError>;
    fn append(
        &self,
        values: &Array<N>,
        axis: Option<usize>
    ) -> Result<Array<N>, ArrayError>;
    fn reshape(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>;
    fn resize(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>;
    fn unique(&self, axis: Option<usize>) -> Result<Array<N>, ArrayError>;
    fn ravel(&self) -> Result<Array<N>, ArrayError>;
    fn atleast(&self, n: usize) -> Result<Array<N>, ArrayError>;
    fn trim_zeros(&self) -> Result<Array<N>, ArrayError>;
}
Expand description

ArrayTrait - Array Manipulate functions

Required Methods§

source

fn insert( &self, indices: Vec<usize>, values: &Array<N>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

Insert values along the given axis for the given indices

Arguments
  • index - indices before which values is inserted
  • values - vector representing values to insert into array
  • axis - axis along which to insert values. if None, then array is flattened first
Examples
use arr_rs::prelude::*;

let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.insert(vec![1], &Array::single(1.).unwrap(), None);
assert_eq!(array!([1., 1., 2., 3., 4.]), arr);
let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.insert(vec![1, 3], &Array::single(1.).unwrap(), None);
assert_eq!(array!([1., 1., 2., 3., 1., 4.]), arr);
source

fn delete( &self, indices: Vec<usize>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

Delete values along the given axis

Arguments
  • indices - vector representing values to delete from array
  • axis - axis along which to find unique values. if None, then array is flattened first
Examples
use arr_rs::prelude::*;

let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.delete(vec![1], None);
assert_eq!(array!([1., 3., 4.]), arr);
let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.delete(vec![2, 3], None);
assert_eq!(array!([1., 2.]), arr);
source

fn append( &self, values: &Array<N>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

Append values to the end of an array

Arguments
  • values - vector representing values to append to array
  • axis - axis along which to append values. if None, then array is flattened first
Examples
use arr_rs::prelude::*;

let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.append(&Array::single(1.).unwrap(), None);
assert_eq!(array!([1., 2., 3., 4., 1.]), arr);
let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
let arr = arr.append(&Array::flat(vec![1., 3.]).unwrap(), None);
assert_eq!(array!([1., 2., 3., 4., 1., 3.]), arr);
source

fn reshape(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>

Reshapes an array

Arguments
  • shape - vector representing new array shape
Examples
use arr_rs::prelude::*;

let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
assert_eq!(array!([1, 2, 3, 4]).unwrap(), arr);
let arr = arr.reshape(vec![2, 2]);
assert_eq!(array!([[1, 2], [3, 4]]), arr);
source

fn resize(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>

Resizes an array,

Arguments
  • shape - vector representing new array shape
Examples
use arr_rs::prelude::*;

let arr: Array<f64> = Array::new(vec![1., 2., 3., 4.], vec![4]).unwrap();
assert_eq!(array!([1, 2, 3, 4]).unwrap(), arr);
let array = arr.resize(vec![2, 2]);
assert_eq!(array!([[1, 2], [3, 4]]), array);
let array = arr.resize(vec![4]);
assert_eq!(array!([1, 2, 3, 4]), array);
let array = arr.resize(vec![8]);
assert_eq!(array!([1, 2, 3, 4, 1, 2, 3, 4]), array);
source

fn unique(&self, axis: Option<usize>) -> Result<Array<N>, ArrayError>

Find the unique elements of an array,

Arguments
  • shape - vector representing new array shape
Examples
use arr_rs::prelude::*;

let arr: Array<i32> = Array::new(vec![1, 1, 2, 3, 3, 4], vec![6]).unwrap();
assert_eq!(array!([1, 2, 3, 4]), arr.unique(None));
let arr: Array<i32> = Array::new(vec![1, 2, 3, 2, 1], vec![5]).unwrap();
assert_eq!(array!([1, 2, 3]), arr.unique(None));
source

fn ravel(&self) -> Result<Array<N>, ArrayError>

Return a contiguous flattened array

Examples
use arr_rs::prelude::*;

let expected = vec![8];

let arr_1 = Array::new(vec![1,2,3,4,5,6,7,8], vec![2, 4]).unwrap();
assert_eq!(expected, arr_1.ravel().get_shape().unwrap());

let arr_2 = Array::new(vec![1,2,3,4,5,6,7,8], vec![4, 2]).unwrap();
assert_eq!(expected, arr_2.ravel().get_shape().unwrap());

let arr_3 = Array::new(vec![1,2,3,4,5,6,7,8], vec![2, 2, 2]).unwrap();
assert_eq!(expected, arr_3.ravel().get_shape().unwrap());
source

fn atleast(&self, n: usize) -> Result<Array<N>, ArrayError>

Convert array to at least n dimension

Arguments
  • n - desired dimension
Examples
use arr_rs::prelude::*;

let arr = Array::new(vec![1], vec![1]).unwrap();
assert_eq!(array!([[1]]), arr.atleast(2));
assert_eq!(array!([[[1]]]), arr.atleast(3));
source

fn trim_zeros(&self) -> Result<Array<N>, ArrayError>

Trim the leading and/or trailing zeros from a 1D array

Examples
use arr_rs::prelude::*;

let arr = Array::flat(vec![0, 0, 1, 2, 3, 4, 0, 0]);
assert_eq!(array!([1, 2, 3, 4]), arr.trim_zeros());

Implementations on Foreign Types§

source§

impl<N: Numeric> ArrayManipulate<N> for Result<Array<N>, ArrayError>

source§

fn insert( &self, indices: Vec<usize>, values: &Array<N>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

source§

fn delete( &self, indices: Vec<usize>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

source§

fn append( &self, values: &Array<N>, axis: Option<usize> ) -> Result<Array<N>, ArrayError>

source§

fn reshape(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>

source§

fn resize(&self, shape: Vec<usize>) -> Result<Array<N>, ArrayError>

source§

fn unique(&self, axis: Option<usize>) -> Result<Array<N>, ArrayError>

source§

fn ravel(&self) -> Result<Array<N>, ArrayError>

source§

fn atleast(&self, n: usize) -> Result<Array<N>, ArrayError>

source§

fn trim_zeros(&self) -> Result<Array<N>, ArrayError>

Implementors§