问题描述:这是我在pytorch中写预测函数时画图所遇到得问题,因为我需要将我的预测值贴到坐标上,对应于纵坐标(每个值对应一个区间即可),可以理解为我只有三个值,但是我要画出阶梯图,然后出现了这种问题:ValueError: could not broadcast input array from shape (3) into shape (200),就是因为我要把一个值在一个数组得前200都是这同样得值,这样就完成了阶梯的一条线,但是它数组要求只能传一维的进去,而我的input array是3维,因此只需在传入之前对获得的三个值进行debug或者shape一下就可以看出它的维度。其实也可以理解为我知做了代码块第三行的操作。
解决方法:
#我print我的shape,发现是(1,1,3)是三维的,那么现在只需要改为一维就可以了,即改为(3,)
depth = np.arange(1500, 2001, 1)
v = np.empty(shape=501, )
v_ture=np.squeeze(v_ture) #将数组(1,1,3)转为(3,),这样才能进行赋值到v中,因为v是一维数组,v_ture为三维数组,存了三个值
#print(v_ture.shape)
v[:200] = v_ture[0]
v[200:350] = v_ture[1]
v[350:] = v_ture[2]
plt.plot(v, depth, 'b', linewidth=5, label='True $v_p$')
博主在使用PyTorch进行预测后,尝试将预测值以阶梯图形式绘制在坐标轴上,遇到了ValueError,原因是试图将三维数组赋值给一维数组。解决方案是通过np.squeeze()函数将三维数组转换为一维,然后逐段赋值给目标数组,成功实现了阶梯图的绘制。重点涉及Python numpy库的数组操作和matplotlib的绘图功能。
5043

被折叠的 条评论
为什么被折叠?



