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

Matplotlib绘图报错ValueError:x与y维度不匹配求助

问题分析与解决

错误原因

你遇到的ValueError核心问题是y轴数据维度不匹配:

  • 每次循环里你把h初始化为空列表,然后append了一个长度为10000的numpy数组,最终h的结构是[array([...])],也就是形状为(1, 10000)的二维结构。
  • 而E是形状为(10000,)的一维数组,plt.plot要求x和y的第一维度必须一致,因此触发报错。
  • 另外你的代码没有实现「对n从0到5的函数求和」的需求,只是循环生成了每个n对应的函数值,但没有累加,最后只保留了最后一次循环的结果。

修正后的代码

import matplotlib.pyplot as plt
import numpy as np
 
E = np.linspace(0, 10, 10000)
total_h = np.zeros_like(E)  # 初始化求和用的数组,和E维度一致

plt.figure(figsize=(10,6))
for n in range(0, 6):
    # 直接计算当前n对应的函数值,得到和E同维度的一维数组
    h_n = 1/(1 + np.exp(-2*np.pi * (E-(n-0.5)*3)))
    total_h += h_n  # 累加每个n的函数值
    plt.plot(E, h_n, label=f'n={n}')  # 绘制单个阶跃函数

# 绘制求和后的总结果
plt.plot(E, total_h, label='所有n的求和结果', linewidth=2, color='black')

plt.xlabel('E')
plt.ylabel('h(E)')
plt.title('多阶跃函数及求和结果')
plt.legend()
plt.grid(True)
plt.show()

关键修正点

  1. 维度匹配:直接用numpy数组计算每个n对应的h_n,它的形状和E完全一致(都是(10000,)),避免了列表嵌套导致的维度问题。
  2. 实现求和:新增total_h数组,循环中累加每个h_n,最终得到所有n对应的函数求和结果。
  3. 可视化优化:添加了图例、坐标轴标签、网格等,让图表更易读;同时可以选择绘制每个单独的阶跃函数,方便对比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:41:12