使用polyfit()函数时如何对多项式系数进行取整?
如何对numpy polyfit的拟合系数取整(保留指定小数位)
嘿,我之前刚好处理过一模一样的需求!给你两个简单直接的方法,就能拿到你想要的保留三位小数的拟合结果:
方法一:对系数数组直接四舍五入
利用numpy自带的np.round()函数,直接对polyfit返回的系数数组进行处理,指定保留3位小数即可。修改后的完整代码如下:
import numpy as np data = [1,4,5,7,8,11,14,15,16,19] x = np.arange(0,len(data)) y = np.array(data) z = np.polyfit(x,y,2) # 对系数数组保留三位小数四舍五入 z_rounded = np.round(z, 3) print(z_rounded) print("{0}x^2 + {1}x + {2}".format(*z_rounded))
运行这段代码后,输出结果就是你想要的:
[0.004 1.905 1.318]
0.004x^2 + 1.905x + 1.318
方法二:格式化输出时指定小数位数
如果只是需要输出美观的字符串,也可以不用提前处理数组,直接在format()方法里为每个系数指定小数位数,这样更灵活。代码修改如下:
import numpy as np data = [1,4,5,7,8,11,14,15,16,19] x = np.arange(0,len(data)) y = np.array(data) z = np.polyfit(x,y,2) # 数组输出时保留三位小数 print(np.round(z, 3)) # 格式化字符串时指定每个系数保留三位小数 print("{0:.3f}x^2 + {1:.3f}x + {2:.3f}".format(*z))
这里{0:.3f}的含义是对第一个参数以浮点数格式保留三位小数,同样能得到符合要求的输出结果。
内容的提问来源于stack exchange,提问作者Tomasz Przemski
相关产品推荐
相关产品推荐

