Python绘图中对X轴数值乘以系数2出现维度不匹配错误的解决方法
解决Matplotlib绘图时x和y维度不匹配的问题
嗨,这个问题我太熟悉啦!咱们先拆解下错误的根源:
当你写x = 2 * x_1时,x_1是Python普通列表,这种乘法操作会把整个列表重复两次,而不是给每个元素单独乘2。比如[0,1,2] * 2会得到[0,1,2,0,1,2],所以你的x变成了300个元素,而y还是150个,自然就出现了维度不匹配的报错。
有两种简单的方法可以解决这个问题:
方法1:用列表推导式逐个元素乘2
直接遍历x_1里的每个元素,给每个元素单独乘2,这样得到的x还是150个元素,和y的维度完全匹配:
x_1 = [*range(0, im1.shape[0], 1)] x = [num * 2 for num in x_1] # 逐个元素乘以系数2 plt.plot(x, y) plt.show()
方法2:转换成numpy数组进行元素级乘法
如果你的im1本身就是numpy矩阵,直接用numpy生成x序列更方便,numpy的乘法默认是元素级运算,不会出现列表重复的问题:
import numpy as np x_1 = np.arange(0, im1.shape[0], 1) # 直接生成numpy数组 x = 2 * x_1 # 这里自动对每个元素乘2 plt.plot(x, y) plt.show()
两种方法都能完美解决你的问题,选哪种看你平时的代码习惯就好~
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

