arrays - 如何将一个 800 行 25 列的文件存储在一个 N 维数组中?

标签 arrays vector rust

我正在寻找一种方法来将 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/

相关文章:

python - 将零重新定位到多维 numpy 数组中最后一个维度的末尾

javascript - 将文本添加到每个数组元素的开头

c++ - 段错误 std::vector<std::string>

c++ - 有没有一种方法可以将一 block 无符号字符移动到 STL vector 中,而不是一次移动 1 个无符号字符

c++ - 具有继承类和函数的抽象类写入单独的 vector c++

c# - 数组实例化错误

java - JAVA中不同数量的数组和数组元素生成子集

error-handling - 在实现 std::io::Write 时处理非 std::io::Error(s)?

error-handling - fn foo() -> 结果 <()> 抛出 "expected 2 type arguments"

callback - 如何实现 JavaScript 风格的回调?