大佬教程收集整理的这篇文章主要介绍了numpy:如何设置精确打印 poly1d,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在打印多项式时设置精度(更一般的格式)。例如:
>>> import numpy as np
>>> beta = np.asarray([-3.61380614191654e-09,2.489464876955e-05,-0.0836384579176789,143.213931472633])
>>> p = np.poly1d(beta)
>>> p
poly1d([-3.61380614e-09,2.48946488e-05,-8.36384579e-02,1.43213931e+02])
>>> print(p)
3 2
-3.614e-09 x + 2.489e-05 x - 0.08364 x + 143.2
>>> np.set_printoptions(precision=8) # this has no effect
>>> print(p)
3 2
-3.614e-09 x + 2.489e-05 x - 0.08364 x + 143.2
我想得到,用多项式调用 print
,类似于:
3 2
-3.61380614e-09 x + 2.48946487e-05 x - 0.08363845 x + 143.21393147
[编辑]
我尝试使用 numpy.polynomial
作为 A. Donda 建议,但我得到了不同的行为:
Python 3.8.6 (default,Jan 27 2021,15:42:20)
[GCC 10.2.0] on linux
Type "Help","copyright","credits" or "license" for more information.
>>> import numpy as np
>>> beta = np.asarray([-3.61380614191654e-09,143.213931472633])
>>> p = np.polynomial.polynomial(np.flip(beta))
>>> p
polynomial([ 1.4321393147e+02,-8.3638457918e-02,2.4894648770e-05,-3.6138061419e-09],domain=[-1,1],window=[-1,1])
>>> print(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),我得到了想要的结果。
__str__
method of poly1d
使用自定义函数来格式化数字:
def fmt_float(q):
s = '%.4g' % q
if s.endswith('.0000'):
s = s[:-5]
return s
所以,你是对的,它不受 NumPy 的 printoptions
的影响。
但是 documentation for poly1d
说它是“旧多项式 API 的一部分”,最好使用 numpy.polynomial
:
>>> p = np.polynomial.Polynomial(np.flip(beta))
>>> p
Polynomial([ 1.432139e+02,-8.363846e-02,2.489465e-05,-3.613806e-09],domain=[-1,1],window=[-1,1])
>>> print(p)
143.213931472633 - 0.0836384579176789·x¹ + 2.489464876955e-05·x² - 3.61380614191654e-09·x³
np.flip
是必需的,因为除 poly1d
外,Polynomial
期望系数按升序排列。
这似乎解决了您的具体问题,获得了高精度的系数。但是,Polynomial.__str__
仍然不尊重 printoptions
:
>>> np.set_printoptions(precision=3)
>>> print(p)
143.213931472633 - 0.0836384579176789·x¹ + 2.489464876955e-05·x² - 3.61380614191654e-09·x³
您可以在 NumPy 存储库中提交问题。
以上是大佬教程为你收集整理的numpy:如何设置精确打印 poly1d全部内容,希望文章能够帮你解决numpy:如何设置精确打印 poly1d所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。