rust で 行列のaxisごとのsumをする
行列を仮定してます
方針は 行はシンプルでmap trickを使ってsumする。最後にcollect が必要です
列sumはtransposeseしてからsumする
本格的にnumpy的なことをしたいならndarray的なのを使おう
use rayon::prelude::*; pub fn transpose<T: Send + Sync + Copy >(v: &Vec<Vec<T>>) -> Vec<Vec<T>> { assert!(!v.is_empty()); let len = v[0].len(); (0..len).into_par_iter() .map(|i| v.iter().map(|row| row[i]).collect()) .collect() } fn main() { let v = vec![vec![1, 2,3], vec![3, 4,6]]; let vt = transpose(&v); println!("{:?}",v); let vs:Vec<i32> = v.iter().map(|row| row.iter().sum() ).collect(); println!("{:?}",vs); println!("{:?}",vt); let vt_s:Vec<i32> = vt.iter().map(|row| row.iter().sum() ).collect(); println!("{:?}",vt_s); }