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 数学
每月下载量 56次
135KB
2.5K SLoC
压缩稀疏向量(CSV)二进制矩阵库。
🦀 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
。
贡献
许可
双许可以与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