我正在寻找一种方法来将 800 行、25 列的文件存储在一个数组中。我已经弄清楚如何将来自 CSV 的数据存储在 25 个不同的向量中,但代码看起来非常困惑,因为我必须声明所有不同的向量。
我非常习惯 Python 中的 array
函数,我想知道在 Rust 中是否有办法做到这一点。我找到了 ndarray外部 crate ,但我不知道如何将它用于 6 维以上的数组。这是我的代码对于二维数组的样子,你可以想象如果有 25 个不同的向量、f
声明和 vector.push()
函数,它看起来会有多困惑.
extern crate rand;
extern crate csv;
fn print(v: Vec<f64>) {
println!("New vector");
for x in &v {
println!("{} ", x);
}
}
fn main() {
let mut rdr = csv::Reader::from_file("./data.csv").unwrap();
let mut v1 = Vec::new();
let mut v2 = Vec::new();
for record in rdr.decode() {
let (f1, f2): (f64, f64) = record.unwrap();
println!("({}, {}, {}, {}, {}, {})", f1, f2);
v1.push(f1);
v2.push(f2);
}
print(v1);
print(v2);
}
最佳答案
我认为您误解了 N 维的含义。
具有行和列的数组只有 2 维,因此可以很容易地表示为 Vec<Vec<f64>>
.
因此我希望代码如下:
fn main() {
let mut rdr = csv::Reader::from_file("./data.csv").unwrap();
let result = Vec::new();
for record in rdr.decode() {
let row: Vec<f64> = record.unwrap();
println!("{:?}", row);
result.push(row);
}
}
利用 Decodable
为 Vec<T>
实现.
关于arrays - 如何将一个 800 行 25 列的文件存储在一个 N 维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42626321/