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

matplotlib绘图报only size-1 arrays can be converted to Python scalars错如何解决

错误原因
  • 你使用了Python标准库math模块下的cos、sin函数,这类函数仅支持传入单个标量数值计算,而你传入的x是numpy.linspace生成的一维数组,类型不匹配触发报错。
  • 另外你的f(x)函数返回的是长度为5的列表,每个元素是对应n阶累加后的和数组,直接传入plt.plot不仅会触发类型问题,也会导致x轴默认取索引值,和实际的x取值不匹配。
修复方案
  1. 将三角函数替换为numpy内置的np.cos、np.sin,支持数组批量运算,同时把调用的pi也替换为np.pi保持类型统一。
  2. 绘图时需要把x数组作为第一个参数传入plt.plot,如果需要展示5个不同阶数的逼近曲线,可以遍历f(x)的返回值依次绘制,也可以加标签区分不同阶数。
修复后完整代码
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    values = []
    s = 0
    for n in range(1, 6, 1):
        s += -((2/(n*np.pi))*(((np.cos((n*np.pi)/2))-1)*(np.sin((n/2)*x))))
        values.append(s)
    return values

x = np.linspace(-2*np.pi, 6*np.pi, 500)
res_list = f(x)
for n, y in enumerate(res_list, start=1):
    plt.plot(x, y, label=f'阶数n={n}')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者Just another noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:30:05