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 编码
19,083 个月下载量
在 15 个crate中使用 (7 直接)
235KB
4K SLoC
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
支持结构化数组,但有很多限制。
与 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