12 releases

Uses old Rust 2015

0.5.3 Oct 25, 2024
0.5.2 May 4, 2023
0.5.1 Apr 25, 2021
0.5.0 Jan 30, 2021
0.3.1 Oct 30, 2018

#200 in Encoding

Download history 11920/week @ 2025-01-31 14139/week @ 2025-02-07 13901/week @ 2025-02-14 15202/week @ 2025-02-21 18128/week @ 2025-02-28 20935/week @ 2025-03-07 17635/week @ 2025-03-14 6252/week @ 2025-03-21 5897/week @ 2025-03-28 6238/week @ 2025-04-04 5022/week @ 2025-04-11 5661/week @ 2025-04-18 7022/week @ 2025-04-25 6287/week @ 2025-05-02 10490/week @ 2025-05-09 8452/week @ 2025-05-16

32,838 downloads per month
Used in 27 crates (12 directly)

MIT/Apache

14KB
246 lines

ndarray-csv

Easily read and write homogeneous CSV data to and from 2D ndarrays.

extern crate csv;
extern crate ndarray;
extern crate ndarray_csv;

use csv::{ReaderBuilder, WriterBuilder};
use ndarray::{array, Array2};
use ndarray_csv::{Array2Reader, Array2Writer};
use std::error::Error;
use std::fs::File;

fn main() -> Result<(), Box<dyn Error>> {
    // Our 2x3 test array
    let array = array![[1, 2, 3], [4, 5, 6]];

    // Write the array into the file.
    {
        let file = File::create("test.csv")?;
        let mut writer = WriterBuilder::new().has_headers(false).from_writer(file);
        writer.serialize_array2(&array)?;
    }

    // Read an array back from the file
    let file = File::open("test.csv")?;
    let mut reader = ReaderBuilder::new().has_headers(false).from_reader(file);
    let array_read: Array2<u64> = reader.deserialize_array2((2, 3))?;

    // Ensure that we got the original array back
    assert_eq!(array_read, array);
    Ok(())
}

This project uses cargo-make for builds; to build, run cargo make all.

To prevent denial-of-service attacks, do not read in untrusted CSV streams of unbounded length; this can be implemented with std::io::Read::take.

License: MIT/Apache-2.0

Dependencies

~3MB
~49K SLoC