| 0.5.0 |
|
|---|
#9 in #npy
11KB
198 行
npyz
Numpy 格式(*.npy)序列化和反序列化。
NPY 是一种简单的二进制数据格式。它在一个头部中存储类型、形状和字节序信息,之后是平面二进制数据字段。这个crate提供了一种简单、大多数情况下类型安全的读取和写入 *.npy 文件的方法。文件使用迭代器处理,因此不需要适应内存。
npyz 是一个似乎已死亡的 npy 的分支和继任者。
用法
[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文件, - 使用结构化数组,
- 与
ndarraycrate 互操作, - NPZ 文件和 scipy 稀疏矩阵,
请参阅根模块的 文档。
与类似crate的关系
npyz 的名称实际上是缩写。以下是crate的完整名称
npy加上 npz 支持,以及很多其他实际上比 npz 更重要的功能——不用说 npz 支持甚至根本不包括在第一个版本中——但我得给它取个名字,对吧
为了澄清,npyz 是 Pavel Potoček 的 npy crate 的分支。原始的 npy 支持使用 derive 的结构化数组,但有很多很多限制。
与 npy 相比,npyz 有
- 多维数组的支持。
- 大端文件的支持。
Complex、字符串和字节数组的支持。- 一个基于
std::io::Read的更通用的阅读API,因此您可以直接从例如zip::read::ZipFile中读取。原始API需要一个&[u8],预期用户可以使用memmap来处理大文件。 - 基于
std::io::Write的写入API。
最初,nippynpyz 是我在向 npy 提交PR之前,大胆尝试新特性的地方,但即使是我最初的一些基础PR也还没有被合并。我相信Pavel思维敏捷,注重细节,我欣赏他们对我的PR的初始回应,但自从上次听到他们的消息以来,已经过去了近两年。因此,我决定继续前进并发布分支。
许可证
npyz 版权所有 2021 Michael Lamparski,根据MIT许可证提供。
npyz 基于 npy 开发。 npy 版权所有 2018 Pavel Potoček,根据MIT许可证提供。
依赖关系
~1.5MB
~35K SLoC