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
文件, - 使用结构化数组,
- 与
ndarray
crate 互操作, - 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。
最初,nippy
npyz
是我在向 npy
提交PR之前,大胆尝试新特性的地方,但即使是我最初的一些基础PR也还没有被合并。我相信Pavel思维敏捷,注重细节,我欣赏他们对我的PR的初始回应,但自从上次听到他们的消息以来,已经过去了近两年。因此,我决定继续前进并发布分支。
许可证
npyz
版权所有 2021 Michael Lamparski,根据MIT许可证提供。
npyz
基于 npy
开发。 npy
版权所有 2018 Pavel Potoček,根据MIT许可证提供。
依赖关系
~1.5MB
~35K SLoC