Python中如何将字典内numpy数组各行分别保存为独立npy文件
正确实现方案
注意:不要使用ndarray.tofile()生成.npy文件,该方法仅写入数组原始二进制值,不会保留numpy数组的shape、dtype等元信息,后续读取易出现数据解析错误,标准.npy格式需要使用numpy.save()接口生成。
遍历数组行时需要同步获取行的索引,才能和lists列表中按顺序对应的名称匹配,使用enumerate即可同时拿到行索引和行数据,完整代码如下:
import numpy as np # 原有数据集定义 lists = ['first_data', 'second_data'] dict_array = { '1': np.array([[1., 1., 2., 2.], [3., 3., 4., 4.]]), '2': np.array([[10., 1., 21., 1.], [24., 12., 32., 33.]]) } # 遍历保存文件 for dict_key, cur_array in dict_array.items(): # 同步获取行索引、行内容,索引和lists元素位置一一对应 for row_idx, row_data in enumerate(cur_array): # 按命名规则拼接文件名 save_filename = f"{dict_key}_{lists[row_idx]}.npy" # 写入标准npy格式文件 np.save(save_filename, row_data)
运行后生成的文件完全匹配命名要求:
dict_array['1']第一行 →1_first_data.npydict_array['1']第二行 →1_second_data.npydict_array['2']第一行 →2_first_data.npydict_array['2']第二行 →2_second_data.npy
额外提示:请提前确认字典中每个numpy数组的行数和
lists的长度一致,否则会触发索引越界报错,存在数据长度不统一的场景可以提前加长度校验逻辑。
内容的提问来源于stack exchange,提问作者ymmy
相关产品推荐
相关产品推荐

