使用polyfit()函数时如何舍入多项式系数?

时间:2018-03-31 11:06:42

标签: python numpy

我使用data函数将多项式拟合到列表polyfit()中的点:

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 (z)
print ("{0}x^2 + {1}x + {2}".format(*z))

输出:

[0.00378788  1.90530303  1.31818182]
0.003787878787878751x^2 + 1.9053030303030298x + 1.3181818181818175

如何使用舍入系数(例如三位小数)得到拟合点?例如,获取:

[0.004  1.905  1.318]
0.004x^2 + 1.905x + 1.318

1 个答案:

答案 0 :(得分:1)

polyfit方法中没有选项可用于舍入。 IIUC,您可以在应用round后使用polyfit

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).round(decimals=3)
array([0.004, 1.905, 1.318])

对于正好在舍入小数值之间的值,NumPy舍入到最接近的偶数值。 因此1.5和2.5舍入到2.0 - > -0.5和0.5 round to 0.0等。结果也可能令人惊讶。引自numpy.around