将HDF5数据集写入字典numpy数组时数据覆盖问题求解
问题成因及解决方法
核心问题
你代码里的np.full((10,10), {})是关键问题所在。因为字典是可变对象,numpy用full填充数组时,不会为每个元素生成新的空字典,而是把同一个字典的引用复制到数组的所有位置。这就意味着数组里的100个元素其实指向内存中同一个字典——你修改任意一个位置的字典内容,其他所有位置的"字典"都会同步变化,最终所有单元格都只显示最后一次修改的结果。
修复方案
把创建数组的代码换成列表推导式,为每个位置生成独立的空字典,再转成numpy数组:
# 替换原来的matrix_dict = np.full((10,10), {}) matrix_dict = np.array([[{} for _ in range(10)] for _ in range(10)])
额外建议
别用eval(group)解析组名,这存在安全风险(如果组名被恶意构造会执行危险代码)。改用字符串分割更安全:
# 替换eval(group)[0], eval(group)[1] row, col = map(int, group.split(', ')) matrix_dict[row, col][key] = value[:]
内容的提问来源于stack exchange,提问作者Nodrael
相关产品推荐
相关产品推荐

