diagonal

Function diagonal 

Source
pub fn diagonal<T>(
    array: ArrayView<'_, T, Ix2>,
    offset: isize,
) -> Result<Array<T, Ix1>, &'static str>
where T: Clone + Default,
Expand description

Extract a diagonal or a sub-diagonal from a 2D array

§Arguments

  • array - The input 2D array
  • offset - Offset from the main diagonal (0 for main diagonal, positive for above, negative for below)

§Returns

A 1D array containing the diagonal elements

§Examples

use ndarray::array;
use scirs2_core::ndarray_ext::indexing::diagonal;

let a = array![[1, 2, 3], [4, 5, 6], [7, 8, 9]];

// Main diagonal
let main_diag = diagonal(a.view(), 0).unwrap();
assert_eq!(main_diag.len(), 3);
assert_eq!(main_diag[0], 1);
assert_eq!(main_diag[1], 5);
assert_eq!(main_diag[2], 9);

// Upper diagonal
let upper_diag = diagonal(a.view(), 1).unwrap();
assert_eq!(upper_diag.len(), 2);
assert_eq!(upper_diag[0], 2);
assert_eq!(upper_diag[1], 6);

// Lower diagonal
let lower_diag = diagonal(a.view(), -1).unwrap();
assert_eq!(lower_diag.len(), 2);
assert_eq!(lower_diag[0], 4);
assert_eq!(lower_diag[1], 8);