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

Python绘制序列变化曲线触发维度不匹配错误如何修复

错误原因

  • 你对生成的序列x调用了set()做去重处理,得到的集合长度和作为横坐标的i长度不匹配:np.linspace(0,100)默认生成50个点,两者长度不一致触发维度报错。
  • 循环逻辑存在漏洞:你已经提前对x[0]赋了初值,但循环从n=0开始运行,第一次执行时x[n-1]会触发Python负索引规则,取到数组最后一位的初始值,不符合序列递推的逻辑。
  • 你的需求是展示序列随参数n的变化规律,不需要额外生成linspace序列作为横坐标,也不需要对序列x做去重。

修复后代码

import matplotlib.pyplot as plt 
import numpy as np

x = np.zeros(101)
x[0] = 0
# 循环从n=1开始,符合递推逻辑
for n in range(1, 101):
    x[n] = x[n-1] - n
    if x[n] < 0:
        x[n] = x[n-1] + n

# 横坐标取n的取值范围0~100,和序列x长度完全匹配
n_axis = np.arange(0, 101)
plt.plot(n_axis, x, 'g')
plt.xlabel('参数n')
plt.ylabel('序列取值')
plt.show()

补充说明

如果你确实需要绘制去重后序列值的分布,需要保证两个绘图序列长度一致,可以用如下写法:

y = sorted(set(x))
plt.plot(y, np.arange(len(y)), 'g')
plt.show()

这种绘制的是去重后序列值的升序分布,不是随参数n的变化规律。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:06