Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions