谢邀我是小猿圈儿的作者milliar。
题主的问题在Traceback中写得很明确了首先出错的行数是5.py这个文件的第19行,
Scipy中optimize模块中的最小二乘法可以说是最经典的数值优化技术了 通过最小化誤差的平方来寻找最符合数据的曲线。在optimize模块中使用leastsq()函数可以很快速地使用最小二乘法对数据进行拟合。
首先来看leastsq()函数地调用格式:
参数还是非常多的一般来说,我们只需要前三个参数就够了他们的作用分别是:
所以数据点的x,y肯定是一一对应的但是Traceback中报错提示(17,) (18,),请题主检查一下U1这个Array的数据是否相比LnU2缺少一个数据点的值呢
当我们使用ufunc函数对两个数组进行计算时,ufunc函数会对这两個数组的对应元素进行计算因此它要求这两个数组有相同的大小(shape相同)。如果两个数组的shape不同的话会进行如下的广播(broadcasting)处理:
- 让所有输入數组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
- 输出数组的shape是输入数组shape的各个轴上的最大值
- 如果输入数组的某个轴和输絀数组的对应轴的长度相同或者其长度为1时这个数组能够用来计算,否则出错
- 当输入数组的某个轴的长度为1时沿着此轴运算时都用此軸上的第一组值
所以从Traceback的错误提示也能看出,确实是由于U1和LnU2两个Array的shape不一致导致的
最后欢迎关注我的微信公众号:小猿圈儿,一起品味码農人生