#binary-data #numpy #ndarray #npy #binary-format #file-format #read-write

npyz

NumPy 文件格式(反)序列化。基于过时的 npy-rs。

12 个版本

0.8.3 2023 年 12 月 23 日
0.8.1 2023 年 6 月 5 日
0.7.4 2023 年 2 月 1 日
0.7.3 2022 年 12 月 23 日
0.6.1 2021 年 7 月 7 日

#123 in 编码

Download history 729/week @ 2024-03-14 1029/week @ 2024-03-21 454/week @ 2024-03-28 1116/week @ 2024-04-04 1470/week @ 2024-04-11 2219/week @ 2024-04-18 2747/week @ 2024-04-25 3533/week @ 2024-05-02 3823/week @ 2024-05-09 2942/week @ 2024-05-16 3631/week @ 2024-05-23 3321/week @ 2024-05-30 4337/week @ 2024-06-06 3993/week @ 2024-06-13 5610/week @ 2024-06-20 4417/week @ 2024-06-27

19,083 个月下载量
15 个crate中使用 (7 直接)

MIT 许可证

235KB
4K SLoC

npyz

crates.io version Documentation Build Status

Numpy 格式(代码*.npy)序列化和反序列化。

NPY 是一种简单的二进制数据格式。它将类型、形状和字节序信息存储在头文件中,随后是扁平的二进制数据字段。这个crate提供了一种简单、类型安全的方式,用于读取和写入*.npy文件。文件使用迭代器处理,因此不需要全部加载到内存中。

npyznpy 的分支和继承者。

docs.rs 上的 API 文档

用法

[dependencies]
npyz = "0.8"

您可能还感兴趣的一些功能

[dependencies]
npyz = {version = "0.8", features = ["derive", "complex", "npz", "arrayvec", "half"]}

现在可以从*.npy文件中读取数据

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let bytes = std::fs::read("test-data/plain.npy")?;

    // Note: In addition to byte slices, this accepts any io::Read
    let npy = npyz::NpyFile::new(&bytes[..])?;
    for number in npy.data::<f64>()? {
        let number = number?;
        eprintln!("{}", number);
    }
    Ok(())
}

有关更多示例和信息,请参阅

  • 读取 npy 文件,
  • 写入 npy 文件,
  • 处理结构化数组,
  • ndarray crate 互操作,
  • NPZ 文件和 scipy 稀疏矩阵,

请参阅根模块的文档

与类似crate的关系

名称 npyz 实际上是一个缩写。以下是crate的完整名称

npy 加上 npz 支持,以及许多其他功能,这些功能实际上比 npz 更重要——不要提npz支持甚至没有包括在第一个版本中——但无论如何我必须给它起个名字,好吧

为了澄清,npyz 是Pavel Potoček的 npy crate 的分支。原始的 npy 支持结构化数组,但有很多限制。

npy 相比,npyz

  • 多维数组支持。
  • 大端文件支持。
  • 支持 Complex、字符串和字节字符串。
  • 一个基于 std::io::Read 的更灵活的读取API,因此您可以直接从例如 zip::read::ZipFile 中读取。原始API需要一个 &[u8],预期用户可以使用内存映射来处理大文件。
  • 基于 std::io::Write 的写入API。

最初,nippy npyz 是我在向 npy 提交PR之前,无拘无束地原型设计新功能的地方,但即使是我最初的几个基础PR也还没有被合并。我相信Pavel有很好的判断力和对细节的关注,我很感激他们对我的PR的初始回应,但从上次我听到他们的消息以来,已经过去了近两年。因此,我决定继续前进并发布分支。

许可证

npyz 版权所有 2021 Michael Lamparski,并根据MIT许可证提供。

npyz 基于 npy 开发。 npy 版权所有 2018 Pavel Potoček,并根据MIT许可证提供。

依赖关系

~2.8–4.5MB
~89K SLoC