(arrayd: &ArrayD<T>)
| 311 | } |
| 312 | |
| 313 | fn convert_arrayd_to_array2_f64<T: NumericOps>(arrayd: &ArrayD<T>) -> anyhow::Result<Array2<f64>> { |
| 314 | let shape = arrayd.shape(); |
| 315 | |
| 316 | match shape.len() { |
| 317 | 1 => Err(anyhow!("The ArrayD must have at least two dimensions!")), |
| 318 | 2 => Ok(arrayd |
| 319 | .mapv(|x| NumCast::from(x).unwrap_or_else(f64::zero)) |
| 320 | .into_dimensionality::<Ix2>()?), |
| 321 | _ => { |
| 322 | let rows = shape[0]; |
| 323 | let cols = shape[1..].iter().product(); |
| 324 | let flat_data: Vec<f64> = arrayd |
| 325 | .iter() |
| 326 | .map(|&x| NumCast::from(x).unwrap_or_else(f64::zero)) |
| 327 | .collect(); |
| 328 | |
| 329 | let data = Array2::from_shape_vec((rows, cols), flat_data)?; |
| 330 | Ok(data) |
| 331 | } |
| 332 | } |
| 333 | } |
| 334 | |
| 335 | fn convert_to_array_f64_csc<T: NumericOps>( |
| 336 | csc: &CscMatrix<T>, |
no outgoing calls
no test coverage detected