我正在尝试使用ndarray crate从 Vec
的1D阵列创建一个2D数组 . 在当前的实现中,我将 Vec<Array1<u32>>
作为一维数组的集合,而我很难弄清楚如何将其转换为 Array2<u32>
. 我在 Vec<Array1<u32>>
上尝试了 from_vec()
,但它产生了 Array1<Array1<u32>>
. 我想过使用 stack!
宏,但我不知道如何在上面的 Vec
上调用它 . 我正在使用ndarray 0.12.1和Rust 1.31.0 .
1 回答
我对
ndarray
并不是很熟悉,但看起来你必须将数据展平为中间步骤,然后从中重建 . 迭代器可能会更有效但我没有看到从迭代器构建的方法,也允许您指定形状 .它可能不是最有效的方法,但它至少起作用:
请注意,如果源阵列具有不同的长度,它可能会失败 . 此解决方案不是100%健壮,因为如果一个阵列较小但由另一个阵列更长的补偿,它将不会失败 . 可能值得在那里添加一张支票以防止这种情况,但我会留给你 .