#![allow(deprecated)]
#![allow(clippy::result_large_err)]
use numrs2::prelude::*;
fn main() -> Result<()> {
println!("NumRS2 Axis-Based Operations Examples");
println!("===================================\n");
let arr = Array::<f64>::from_vec(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0]).reshape(&[2, 3]);
println!("Original 2D array (shape {:?}):", arr.shape());
println!("{:?}", arr);
println!("\nSum Operations:");
println!("--------------");
println!("Sum of entire array: {}", arr.sum());
let sum_axis0 = arr.sum_axis(0)?;
println!(
"Sum along axis 0 (columns) (shape {:?}):",
sum_axis0.shape()
);
println!("{:?}", sum_axis0);
let sum_axis1 = arr.sum_axis(1)?;
println!("Sum along axis 1 (rows) (shape {:?}):", sum_axis1.shape());
println!("{:?}", sum_axis1);
println!("\nMean Operations:");
println!("---------------");
println!("Mean of entire array: {}", arr.mean());
let mean_axis0 = arr.mean_axis(Some(0))?;
println!("Mean along axis 0 (shape {:?}):", mean_axis0.shape());
println!("{:?}", mean_axis0);
let mean_axis1 = arr.mean_axis(Some(1))?;
println!("Mean along axis 1 (shape {:?}):", mean_axis1.shape());
println!("{:?}", mean_axis1);
println!("\nMin/Max Operations:");
println!("------------------");
println!("Min of entire array: {}", arr.min());
println!("Max of entire array: {}", arr.max());
let min_axis0 = arr.min_axis(Some(0))?;
println!("Min along axis 0: {:?}", min_axis0);
let max_axis1 = arr.max_axis(Some(1))?;
println!("Max along axis 1: {:?}", max_axis1);
println!("\nProduct Operations:");
println!("------------------");
println!("Product of entire array: {}", arr.product());
let prod_axis0 = arr.prod_axis(Some(0))?;
println!("Product along axis 0: {:?}", prod_axis0);
let prod_axis1 = arr.prod_axis(Some(1))?;
println!("Product along axis 1: {:?}", prod_axis1);
println!("\nCumulative Operations:");
println!("---------------------");
let cumsum_axis0 = arr.cumsum_axis(0)?;
println!(
"Cumulative sum along axis 0 (shape {:?}):",
cumsum_axis0.shape()
);
println!("{:?}", cumsum_axis0);
let cumsum_axis1 = arr.cumsum_axis(1)?;
println!(
"Cumulative sum along axis 1 (shape {:?}):",
cumsum_axis1.shape()
);
println!("{:?}", cumsum_axis1);
let cumprod_axis1 = arr.cumprod_axis(1)?;
println!(
"Cumulative product along axis 1 (shape {:?}):",
cumprod_axis1.shape()
);
println!("{:?}", cumprod_axis1);
println!("\nArgmin/Argmax Operations:");
println!("------------------------");
let argmin_axis1 = arr.argmin_axis(1)?;
println!(
"Argmin along axis 1 (indices of minimum values): {:?}",
argmin_axis1
);
let argmax_axis0 = arr.argmax_axis(0)?;
println!(
"Argmax along axis 0 (indices of maximum values): {:?}",
argmax_axis0
);
println!("\nStatistical Operations:");
println!("----------------------");
println!("Variance of entire array: {}", arr.var());
println!("Standard deviation of entire array: {}", arr.std());
let var_axis0 = arr.var_axis(Some(0))?;
println!("Variance along axis 0: {:?}", var_axis0);
let std_axis1 = arr.std_axis(Some(1))?;
println!("Standard deviation along axis 1: {:?}", std_axis1);
println!("\n3D Array Example:");
println!("----------------");
let arr_3d = Array::<f64>::from_vec(vec![
1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0,
])
.reshape(&[3, 2, 2]);
println!("3D array shape: {:?}", arr_3d.shape());
let sum_axis0_3d = arr_3d.sum_axis(0)?;
println!("Sum along axis 0 (shape {:?}):", sum_axis0_3d.shape());
println!("{:?}", sum_axis0_3d);
let sum_axis1_3d = arr_3d.sum_axis(1)?;
println!("Sum along axis 1 (shape {:?}):", sum_axis1_3d.shape());
println!("{:?}", sum_axis1_3d);
let sum_axis2_3d = arr_3d.sum_axis(2)?;
println!("Sum along axis 2 (shape {:?}):", sum_axis2_3d.shape());
println!("{:?}", sum_axis2_3d);
Ok(())
}