Skip to content

Array3 from Vec<Array2<Complex<f32>>> #607

Closed
@cafeclimber

Description

@cafeclimber

Is it not possible to create a 3D array from a vec of Array2? Mine are complex, but I'm not sure this matters. Here's what I'm trying:

let matrix_data = vec![];
{
    ...
    let mat = aview!(&complex_vec).into_shape((rank, rank)).unwrap();
    matrix_data.push(mat.to_owned());
    ...
}
let array_3d = Array3::from(&matrix_data);

and the error I'm getting is

error[E0277]: the trait bound `ndarray::ArrayBase<ndarray::OwnedRepr<_>, ndarray::Dim<[usize; 3]>>: std::convert::From<&std::vec::Vec<ndarray::ArrayBase<ndarray::OwnedRepr<num_complex::Complex<f32>>, ndarray::Dim<[usize; 2]>>>>` is not satisfied
   --> /home/rdcampbell/Documents/Programming/scirust_rf/src/touchstone.rs:199:24
    |
199 |         let array_3d = Array3::from(&matrix_data);
    |                        ^^^^^^^^^^^^ the trait `std::convert::From<&std::vec::Vec<ndarray::ArrayBase<ndarray::OwnedRepr<num_complex::Complex<f32>>, ndarray::Dim<[usize; 2]>>>>` is not implemented for `ndarray::ArrayBase<ndarray::OwnedRepr<_>, ndarray::Dim<[usize; 3]>>`
    |
    = help: the following implementations were found:
              <ndarray::ArrayBase<ndarray::OwnedRepr<A>, ndarray::Dim<[usize; 2]>> as std::convert::From<std::vec::Vec<V>>>
              <ndarray::ArrayBase<ndarray::ViewRepr<&'a A>, D> as std::convert::From<&'a ndarray::ArrayBase<S, D>>>
              <ndarray::ArrayBase<ndarray::ViewRepr<&'a A>, ndarray::Dim<[usize; 1]>> as std::convert::From<&'a Slice>>error[E0277]: the trait bound `ndarray::ArrayBase<ndarray::OwnedRepr<_>, ndarray::Dim<[usize; 3]>>: std::convert::From<&std::vec::Vec<ndarray::ArrayBase<ndarray::OwnedRepr<num_complex::Complex<f32>>, ndarray::Dim<[usize; 2]>>>>` is not satisfied
   --> /home/rdcampbell/Documents/Programming/scirust_rf/src/touchstone.rs:199:24
    |
199 |         let array_3d = Array3::from(&matrix_data);
    |                        ^^^^^^^^^^^^ the trait `std::convert::From<&std::vec::Vec<ndarray::ArrayBase<ndarray::OwnedRepr<num_complex::Complex<f32>>, ndarray::Dim<[usize; 2]>>>>` is not implemented for `ndarray::ArrayBase<ndarray::OwnedRepr<_>, ndarray::Dim<[usize; 3]>>`
    |
    = help: the following implementations were found:
              <ndarray::ArrayBase<ndarray::OwnedRepr<A>, ndarray::Dim<[usize; 2]>> as std::convert::From<std::vec::Vec<V>>>
              <ndarray::ArrayBase<ndarray::ViewRepr<&'a A>, D> as std::convert::From<&'a ndarray::ArrayBase<S, D>>>
              <ndarray::ArrayBase<ndarray::ViewRepr<&'a A>, ndarray::Dim<[usize; 1]>> as std::convert::From<&'a Slice>>
              <ndarray::ArrayBase<ndarray::ViewRepr<&'a mut A>, D> as std::convert::From<&'a mut ndarray::ArrayBase<S, D>>>
            and 3 others
    = note: required by `std::convert::From::from`


              <ndarray::ArrayBase<ndarray::ViewRepr<&'a mut A>, D> as std::convert::From<&'a mut ndarray::ArrayBase<S, D>>>
            and 3 others
    = note: required by `std::convert::From::from`

I saw shape_from_vec, but that doesn't work for me either. I think because of the shape of my Vec

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions