使用数组绘图时遇ValueError维度不匹配问题,求解决办法
解决Matplotlib绘图时的维度不匹配错误
错误原因
报错ValueError: x and y must have same first dimension的核心是调用plt.plot()时,传入的x轴数组和y轴数组长度不一致。比如list_iter_bisect(迭代次数)和list_ea_bisect(误差值)一个是21个元素,另一个是22个,或者False-Position对应的两组数组长度不匹配。
解决步骤
定位问题组
在绘图代码前添加以下代码,打印各组数组的长度,明确哪一组x/y不匹配:print("二分法迭代次数长度:", len(list_iter_bisect)) print("二分法误差长度:", len(list_ea_bisect)) print("试位法迭代次数长度:", len(list_iter_falsepost)) print("试位法误差长度:", len(list_ea_falsepost))修正长度不一致
- 优先调整生成
list_iter_xxx和list_ea_xxx的逻辑,从根源上保证每组的x/y长度一致(比如检查迭代计数和误差计算的时机是否同步)。 - 如果确认某组数组多了一个无效元素,可以用
pop()移除末尾元素(比如若list_ea_bisect比list_iter_bisect多一个元素,执行list_ea_bisect.pop()),但要确保移除的元素确实是冗余的。
- 优先调整生成
修复迭代次数最大值计算逻辑
当前代码错误地将误差数组放入迭代次数比较列表,导致用误差值判断最大迭代次数,修正为:matrix_iter_count = [array_list_iter_bisect, array_list_iter_falsepost] iter_max = 0 for arr_iter in matrix_iter_count: if iter_max < arr_iter[-1]: iter_max = arr_iter[-1]冗余代码清理
重复调用了两次plt.plot(x_error_max, y_error_max, c='black'),删掉其中一次即可。
内容的提问来源于stack exchange,提问作者Agatha Hadasa
相关产品推荐
相关产品推荐

