Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy:如何设置精密打印poly1d_Python_Python 3.x_Numpy_Formatting - Fatal编程技术网

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存储库中提交问题。

请参阅我的原始帖子中的编辑请参阅我的原始帖子中的编辑