You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python复杂字典保存为Excel时数值被替换为...该如何解决

问题原因

你观察到的...并非数值丢失,而是两个显示截断逻辑导致的:

  • numpy数组默认设置了打印长度阈值,元素数量超过阈值后会自动用...省略中间内容
  • 你直接将高维numpy数组作为元素存入DataFrame单元格,导出Excel时pandas会调用数组的默认字符串表示,因此会带上截断符号。

修复方案

方案1:数组展开为独立单元格存储(推荐)

将高维数组的每个数值单独存入Excel单元格,方便后续读取、计算处理,示例代码如下:

import pandas as pd
import numpy as np

attention_relevance = model.get_attention(test)
attentionres = []
for key in attention_relevance.keys():
    # 可根据需求调整维度处理逻辑,这里以三维数组展平为一维为例
    flatten_arr = attention_relevance[key].flatten()
    # 首列存字典key,方便后续对应数据来源,不需要可以删除
    row_data = [key] + flatten_arr.tolist()
    attentionres.append(row_data)

# 自定义列名,不需要key的话对应调整列名规则即可
col_list = ["data_key"] + [f"val_{i}" for i in range(len(attentionres[0]) - 1)]
dfattention = pd.DataFrame(attentionres, columns=col_list)
dfattention.to_excel(r'/savepath/attention.xlsx', index=False)

方案2:完整数组字符串存入单个单元格

如果你需要保留数组的原始结构形式,存在单个单元格中,可修改numpy打印配置关闭截断:

import pandas as pd
import numpy as np

# 全局关闭numpy数组打印截断,无限制打印长度与行宽
np.set_printoptions(threshold=np.inf, linewidth=np.inf)

attention_relevance = model.get_attention(test)
attentionres = []
for key in attention_relevance.keys():
    # 手动将数组转为完整字符串,可自定义分隔符
    full_arr_str = np.array2string(attention_relevance[key], separator=' ')
    attentionres.append({"key": key, "attention_value": full_arr_str})

dfattention = pd.DataFrame(attentionres)
dfattention.to_excel(r'/savepath/attention.xlsx', index=False)

内容的提问来源于stack exchange,提问作者Hinnerk8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:15:02