#稀疏矩阵 #二进制 #csv #压缩 #结构 #分区 #向量

csvbinmatrix

二进制矩阵压缩稀疏向量

9个版本 (重大更改)

0.7.0 2024年5月3日
0.6.0 2024年5月1日
0.5.1 2024年4月27日
0.4.0 2024年4月26日
0.1.1 2024年4月16日

#252 in 数学

Download history 549/week @ 2024-04-26 209/week @ 2024-05-03 49/week @ 2024-07-26 7/week @ 2024-08-02

每月下载量 56次

MIT/Apache

135KB
2.5K SLoC

压缩稀疏向量(CSV)二进制矩阵库。

Crates.io MSRV Crate Downloads Coverage report Pipeline status docs.rs License

🦀 Rust包,用于表示为压缩稀疏向量(CSV)格式的二进制矩阵。

📖 有关此库的更多信息,请参阅docs.rs 文档

CSVBinaryMatrix 是主要结构,并维护适合稀疏矩阵的CSV格式。

此crate基于以下参考资料部分。

快速使用

# fn quick_usage() -> Result<(), Box<dyn std::error::Error>> {
use csvbinmatrix::prelude::CSVBinaryMatrix;

let matrix = match CSVBinaryMatrix::try_from(&[
    [0, 0, 0],
    [0, 0, 1],
    [0, 1, 1],
    [1, 1, 1],
]) {
    Ok(m) => m,
    Err(e) => panic!("[ERROR] Cannot create the matrix: {e}"),
};

println!("Matrix stats");
println!("------------");
println!(
    "Dimensions: {}x{} ({})",
    matrix.number_of_rows(),
    matrix.number_of_columns(),
    matrix.number_of_cells()
);
println!(
    "Number of ones/zeros: {}/{}",
    matrix.number_of_ones(),
    matrix.number_of_zeros()
);
println!("Density: {:.2}%", matrix.density() * 100.0);
println!("Sparsity: {:.2}%", matrix.sparsity() * 100.0);
println!();

println!("Coordinates of ones");
println!("-------------------");
println!("row\tcolumn");
println!("---\t-------");
for coordinates in matrix.iter_ones_coordinates() {
    println!("{}\t{}", coordinates.row(), coordinates.column());
}
println!();

match matrix.to_file("mymatrix.csvbm") {
    Ok(_) => println!("[INFO] File created"),
    Err(e) => println!("[ERROR] Creating the file fails: {e}"),
}

match CSVBinaryMatrix::try_from_file("mymatrix.csvbm") {
    Ok(m) => {
        println!("[INFO] Read from file");
        assert_eq!(m, matrix)
    }
    Err(e) => println!("[ERROR] Cannot read the file: {e}"),
}
#
#    std::fs::remove_file("mymatrix.csvbm").unwrap_or(());
#    Ok(())
# }

教程

最近更改

查看CHANGELOG.md

贡献

查看CONTRIBUTING.md

许可

双许可以与Rust项目兼容。

许可协议:Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可证 http://opensource.org/licenses/MIT,由您选择。此文件不得复制、修改或分发,除非根据这些条款。

参考资料

此包基于以下论文,其中作者的方法被调整为适用于二进制矩阵

Farzaneh, Aiyoub, Hossein Kheırı, et Mehdi Abbaspour Shahmersı. « AN EFFICIENT STORAGE FORMAT FOR LARGE SPARSE MATRICES ». Communications Faculty of Sciences University of Ankara Series A1 Mathematics and Statistics 58, nᵒ 2 (1 août 2009): 1‑10. https://doi.org/10.1501/Commua1_0000000648.

依赖关系

~0.4–1MB
~21K SLoC