如何将含33696行数据的大型npy文件分割为18个小型npy文件?
分割大型NPY文件为多个小型NPY文件
NPY是NumPy的二进制存储格式,不能直接用文本分割代码处理,必须借助NumPy来加载并分片数据。以下是两种实用的实现方案:
方法一:一次性加载后分片保存
适合内存足够容纳整个大文件的场景:
import numpy as np # 加载目标大型NPY文件 large_data = np.load('large_file.npy') # 校验数据行数是否符合预期 assert large_data.shape[0] == 33696, "数据行数与预期不符,请检查原文件" # 定义每个小文件的行数 chunk_size = 1872 # 循环分割并保存分片 for chunk_idx in range(18): start = chunk_idx * chunk_size end = start + chunk_size chunk_data = large_data[start:end] np.save(f'split_file_{chunk_idx+1}.npy', chunk_data)
方法二:内存映射分块加载(内存不足时使用)
如果大文件体积过大,无法一次性载入内存,可以用内存映射模式加载,避免占用过多内存资源:
import numpy as np chunk_size = 1872 total_chunks = 18 # 以只读内存映射方式打开文件,无需一次性载入全部数据 with np.load('large_file.npy', mmap_mode='r') as large_data: for chunk_idx in range(total_chunks): start = chunk_idx * chunk_size end = start + chunk_size # 读取当前分片并转为可写入的数组 chunk = large_data[start:end].copy() np.save(f'split_file_{chunk_idx+1}.npy', chunk)
注意事项
- 替换代码中的
large_file.npy为你的实际文件名,输出的小文件名可按需修改。 - 运行前确保已安装NumPy库,可通过命令
pip install numpy完成安装。 - 由于33696 = 18 × 1872,数据刚好能被完全分割,不会产生剩余数据块。
内容的提问来源于stack exchange,提问作者Mohamed
相关产品推荐
相关产品推荐

