numrst 0.5.0

Fundamental package for scientific computing
Documentation
use std::collections::HashMap;

use numrst::{io::DynamicNdArray, prelude::*};
use tempfile::NamedTempFile;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let tmpfile = NamedTempFile::new().unwrap();

    let scalar = NdArray::new(1).unwrap();
    let vector_f32 = NdArray::new(&[1.0f32, 2., 3.]).unwrap();
    let matrix_f32 = NdArray::new(&[[1, 2, 3], [3, 4, 5]]).unwrap();
    let ones_f32 = NdArray::<f32>::ones((2, 9)).unwrap();
    let randn_f64 = NdArray::randn(0.0f64, 1., (1, 2, 3)).unwrap();
    let fill_f64 = NdArray::full((2, 3, 4), 1.2).unwrap();
    let arange_f64 = NdArray::arange(0., 10.).unwrap();
    let trues = NdArray::trues((3, 4)).unwrap();
    let booleans = NdArray::new(&[[true, false], [false, true]]).unwrap();

    let mut ndarrays = HashMap::new();
    ndarrays.insert("scalar".to_string(), DynamicNdArray::I32(scalar));
    ndarrays.insert("vector_f32".to_string(), DynamicNdArray::F32(vector_f32));
    ndarrays.insert("matrix_f32".to_string(), DynamicNdArray::I32(matrix_f32));
    ndarrays.insert("ones_f32".to_string(), DynamicNdArray::F32(ones_f32));
    ndarrays.insert("randn_f64".to_string(), DynamicNdArray::F64(randn_f64));
    ndarrays.insert("fill_f64".to_string(), DynamicNdArray::F64(fill_f64));
    ndarrays.insert("arange_f64".to_string(), DynamicNdArray::F64(arange_f64));
    ndarrays.insert("trues".to_string(), DynamicNdArray::Bool(trues));
    ndarrays.insert("booleans".to_string(), DynamicNdArray::Bool(booleans));

    numrst::io::save_npz_file(&ndarrays, tmpfile.path()).unwrap();

    let ndarrays = numrst::io::load_npz_file(tmpfile.path()).unwrap();
    for (name, _) in ndarrays {
        println!("{}", name);
    }

    Ok(())
}