Python numpy:如何设置精密打印poly1d
我想在打印多项式时设置精度(更一般的格式)。例如:Python numpy:如何设置精密打印poly1d,python,python-3.x,numpy,formatting,Python,Python 3.x,Numpy,Formatting,我想在打印多项式时设置精度(更一般的格式)。例如: >>将numpy作为np导入 >>>β=np.asarray([-3.61380614191654e-09,2.489464876955e-05,--0.08363845791767891143.213931472633]) >>>p=np.poly1d(β) >>>p poly1d([-3.61380614e-09、2.48946488e-05、-8.36384579e-02、1.43213931e+02]) >>>印刷品(p) 3
>>将numpy作为np导入
>>>β=np.asarray([-3.61380614191654e-09,2.489464876955e-05,--0.08363845791767891143.213931472633])
>>>p=np.poly1d(β)
>>>p
poly1d([-3.61380614e-09、2.48946488e-05、-8.36384579e-02、1.43213931e+02])
>>>印刷品(p)
3 2
-3.614e-09X+2.489e-05X-0.08364X+143.2
>>>np.设置打印选项(精度=8)#这没有效果
>>>印刷品(p)
3 2
-3.614e-09X+2.489e-05X-0.08364X+143.2
我想通过多项式调用print
,得到类似于:
32
-3.61380614e-09 x+2.48946487e-05 x-0.08363845 x+143.21393147
[编辑]
我试着按照A.Donda的建议使用numpy.polymone
,但我得到了一个不同的行为:
Python 3.8.6(默认值,2021年1月27日,15:42:20)
linux上的[GCC 10.2.0]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>将numpy作为np导入
>>>β=np.asarray([-3.61380614191654e-09,2.489464876955e-05,--0.08363845791767891143.213931472633])
>>>p=np.多项式.多项式(np.翻转(β))
>>>p
多项式([1.4321393147e+02,-8.3638457918e-02,2.4894648770e-05,
-3.6138061419e-09],域=[-1,1],窗口=[-1,1])
>>>印刷品(p)
poly([1.4321393147e+02-8.3638457918e-02 2.4894648770e-05-3.6138061419e-09])
使用print(p)
打印多项式不会得到预期的结果
[Edit2]
Ubuntu 20.10有numpy 1.18.4。相反,使用pip3强制更新版本(1.20.1),我得到了期望的结果。使用自定义函数格式化数字:
def fmt_float(q):
s = '%.4g' % q
if s.endswith('.0000'):
s = s[:-5]
return s
因此,您是对的,它不受NumPy的printoptions
的影响
但该公司表示,这是“旧多项式API的一部分”,应该更好地使用:
np.flip
是必需的,因为除了poly1d
之外,多项式
期望系数按递增顺序递增
这似乎解决了你的具体问题,得到了高精度的系数。但是,多项式.\uuuu str\uuuu
仍然不尊重打印选项
:
>>> np.set_printoptions(precision=3)
>>> print(p)
143.213931472633 - 0.0836384579176789·x¹ + 2.489464876955e-05·x² - 3.61380614191654e-09·x³
您可以在NumPy存储库中提交问题。使用自定义函数格式化数字:
def fmt_float(q):
s = '%.4g' % q
if s.endswith('.0000'):
s = s[:-5]
return s
因此,您是对的,它不受NumPy的printoptions
的影响
但该公司表示,这是“旧多项式API的一部分”,应该更好地使用:
np.flip
是必需的,因为除了poly1d
之外,多项式
期望系数按递增顺序递增
这似乎解决了你的具体问题,得到了高精度的系数。但是,多项式.\uuuu str\uuuu
仍然不尊重打印选项
:
>>> np.set_printoptions(precision=3)
>>> print(p)
143.213931472633 - 0.0836384579176789·x¹ + 2.489464876955e-05·x² - 3.61380614191654e-09·x³
您可以在NumPy存储库中提交问题。请参阅我的原始帖子中的编辑请参阅我的原始帖子中的编辑