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

TypeError: expected 1D vector for x 散点图正常但趋势线生成失败如何解决

报错原因

np.polyfit() 要求输入的x、y参数均为一维向量,你当前代码中的x、y是二维单列DataFrame结构,因此触发类型错误。
plt.scatter() 对二维单列输入有兼容性处理,所以散点图可以正常生成。

修复方法

你只需要将读取到的单列DataFrame转为一维结构即可,有两种常用实现方式:

  • 读取Excel时调用squeeze()方法,直接将单列DataFrame转为一维Series
  • 读取后通过values.flatten()转为一维numpy数组
修改后可运行代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取时直接转一维结构
x = pd.read_excel("Slider.xlsx", sheet_name="K", skiprows=2, usecols="E").squeeze()
y = pd.read_excel("Slider.xlsx", sheet_name="K", skiprows=2, usecols="F").squeeze()

plt.scatter(x, y)
# 此时x、y均为一维结构,可正常传入polyfit
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x, p(x), "r--")
plt.show()

如果squeeze()方法不生效,可以替换为如下写法实现转一维:

x = pd.read_excel("Slider.xlsx", sheet_name="K", skiprows=2, usecols="E").values.flatten()
y = pd.read_excel("Slider.xlsx", sheet_name="K", skiprows=2, usecols="F").values.flatten()

内容的提问来源于stack exchange,提问作者karthik.B.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:24:04