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

Python报Only size-1 arrays错误,奇数n的函数h绘图失败如何解决

问题原因分析
  • 第一个错误根源:你导入了math模块的sin函数,该函数仅支持传入单个数值(标量)作为参数,但你的x是NumPy生成的数组,直接传入就会触发only size-1 arrays can be converted to Python scalars报错。不需要额外用vectorize,直接用NumPy自带的向量化sin函数即可。
  • 第二个逻辑错误:你把j = h + j写在了for循环外部,只会累加最后一次循环的h值,无法得到前20项的求和结果,和预期的傅里叶级数叠加逻辑不符。
修正后可运行代码
import numpy as np
import matplotlib.pyplot as plt

j = 0
x = np.arange(-np.pi, np.pi, 0.01)

for n in range(1, 21):
    if n % 2 == 0:
        h = 0
    else:
        # 使用numpy的向量化sin函数,支持数组输入
        h = (4/(n*np.pi))*np.sin(n*x)
    # 把累加操作移到循环内部,每次循环都更新求和结果
    j = h + j

plt.plot(x, j)
plt.show()
补充说明

如果确实需要用到自定义函数对NumPy数组做逐元素运算,才需要用到np.vectorize装饰器,当前场景下NumPy自带的三角函数已经原生支持向量化运算,不需要额外处理。

内容的提问来源于stack exchange,提问作者J Pablo A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:45:02