gpt4 book ai didi

python - 无需加载多个 .npy 文件即可获取向量的长度

转载 作者:行者123 更新时间:2023-11-30 22:05:48 27 4
gpt4 key购买 nike

我有大约 2000 个 .npy 文件,每个文件代表一个一维 float 向量,其中包含 100,000 到 1,000,000 个条目(这两个数字将来都会大幅增长)。对于每个文件,我想要它包含的向量的长度。以下选项是可能的,但很耗时:

lengths = [numpy.shape(numpy.load(whatever))[0] 对于 os.listdir(some_dir) 中的任何内容]

问题:导出该向量长度列表的最有效/最快的方法是什么?当然,我应该能够直接根据文件大小进行工作,但是最好的方法是什么?

最佳答案

使用内存映射文件将大大加快速度。通过内存映射文件,numpy 仅加载 header 以获取数组形状和数据类型,而实际数组数据则保留在磁盘上直到需要时为止。

import numpy as np 
# Load files using memmap
data = [np.load(f, mmap_mode='r')) for f in os.listdir(some_dir)]
# Checking your assumptions never hurts
assert (d.ndim == 1 for d in data).all()

lengths = [d.shape[0] for d in data]

编辑 您需要加载文件头而不是直接使用文件大小的原因是 npy 文件的 header 不一定是固定长度。尽管对于没有字段或字段名的一维数组,它可能不会改变(请参阅 https://www.numpy.org/devdocs/reference/generated/numpy.lib.format.html )。

关于python - 无需加载多个 .npy 文件即可获取向量的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52889798/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com