#npy #array #structured #reading #numpy #deserialize #npyz

npyz-derive

#[derive(...)]s 用于读取NPY文件中的结构化数组

3 个版本 (破坏性更新)

0.7.0 2022年8月27日
0.6.0 2021年7月6日
0.5.0 2021年7月2日

#7#npy

Download history 69/week @ 2024-03-29 61/week @ 2024-04-05 42/week @ 2024-04-12 54/week @ 2024-04-19 53/week @ 2024-04-26 26/week @ 2024-05-03 6/week @ 2024-05-10 11/week @ 2024-05-17 25/week @ 2024-05-24 36/week @ 2024-05-31 22/week @ 2024-06-07 20/week @ 2024-06-14 22/week @ 2024-06-21 26/week @ 2024-06-28 33/week @ 2024-07-05 23/week @ 2024-07-12

每月下载量 105
2 个crate中(通过 npyz)使用

MIT 协议

11KB
198

npyz

crates.io version Documentation Build Status

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

NPY 是一种简单的二进制数据格式。它在一个标题中存储类型、形状和字节序信息,然后是扁平的二进制数据字段。这个crate提供了一个简单、主要类型安全的读取和写入 *.npy 文件的方法。文件通过迭代器处理,因此它们不需要适合内存。

npyz 是一个分支和继任者,它似乎已经死亡 npy

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 支持通过 derives 的结构化数组,但有许多限制。

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许可证下提供。


lib.rs:

为结构化数组推导 npyz 的特性。

使用此crate,只需在结构体上使用 #[derive(npyz::Serialize, npyz::Deserialize)] 即可对其进行序列化和反序列化。所有字段都必须实现 SerializeDeserialize

依赖

~1.5MB
~35K SLoC