使用pandas将numpy数组导出到Excel时提示需传入2维输入报错如何解决
报错原因
pandas 构造 DataFrame 仅接受 2 维输入,你所使用的 AccZONE 数组维度为(710,1,1),属于 3 维结构,后两个维度均为长度为 1 的冗余维度,不符合输入要求因此触发报错。
可用解决方案
- 方案1:使用
numpy.squeeze()移除所有长度为1的冗余维度
该方法会自动删除数组中所有大小为1的维度,处理后如果需要保留2维的列结构,可搭配reshape使用:# 处理后维度为 (710, 1),符合2维输入要求 AccZONE_2d = AccZONE.squeeze().reshape(-1, 1) - 方案2:直接使用
reshape显式指定为2维结构
不需要手动计算维度长度,可通过数组本身的shape属性动态获取第一维大小:AccZONE_2d = AccZONE.reshape(AccZONE.shape[0], 1) - 方案3:通过索引直接提取有效维度
由于冗余维度的长度均为1,直接索引对应位置即可拿到有效数据:# 取所有第一维数据,后两个维度取第一个元素,处理后维度为(710,1) AccZONE_2d = AccZONE[:, 0:1, 0]
完整导出示例
import pandas as pd # 处理数组维度 AccZONE_2d = AccZONE.squeeze().reshape(-1, 1) # 构造DataFrame并导出Excel df = pd.DataFrame(AccZONE_2d, columns=["AccZONE"]) df.to_excel("output.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Khashayar_MO
相关产品推荐
相关产品推荐

