【问题标题】:numpy.around not working appopriately [duplicate]numpy.around 无法正常工作 [重复]
【发布时间】:2018-07-19 02:07:17
【问题描述】:

我正在尝试使用 numpy.around 来格式化浮点向量,以便每个值都有两个小数。但是,当最后一位为 0 时,它会自动省略它。

例如,当我有以下代码时

import numpy as np
a = np.array([  56.8313253 ,  385.30120482,    6.65060241,  126.62650602,
         85.75903614,  192.72289157,  112.80722892,   10.55421687 ])
np.around(a,decimals=2)

我收到以下结果,其中第二个数字只有一位。

array([  56.83,  385.3 ,    6.65,  126.63,   85.76,  192.72,  112.81,
         10.55])

有什么方法可以让我始终保持 0 结尾?这是发布时需要的,手动添加0太繁琐,因为我有很多这样的案例。

【问题讨论】:

    标签: python arrays numpy rounding


    【解决方案1】:

    在打印数组之前使用np.set_printoptions(formatter={'float': '{: 0.3f}'.format})

    In [1]: import numpy as np
    
    In [2]: a = np.random.random(20)
    
    In [3]: print(a)
    [ 0.78298863  0.09129314  0.04204522  0.04574351  0.76764957  0.58406234
      0.26670654  0.39624515  0.27261618  0.29430686  0.49316331  0.72693718
      0.16535966  0.53017297  0.66432047  0.24194043  0.91635168  0.29603418
      0.07480831  0.67555659]
    
    In [4]: np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
    
    In [5]: print(a)
    [ 0.783  0.091  0.042  0.046  0.768  0.584  0.267  0.396  0.273  0.294
      0.493  0.727  0.165  0.530  0.664  0.242  0.916  0.296  0.075  0.676]
    

    【讨论】:

      【解决方案2】:

      不太确定您的出版物需要什么,但如果您只需要某种列表中的数字,您可以使用如下字符串格式:

      import numpy as np
      [  56.8313253 ,  385.30120482,    6.65060241,  126.62650602,
               85.75903614,  192.72289157,  112.80722892,   10.55421687 ])
      ["{:.2f}".format(x) for x in a]
      

      返回:

      ['56.83', '385.30', '6.65', '126.63', '85.76', '192.72', '112.81', '10.55']
      

      【讨论】:

        【解决方案3】:

        decimal 模块提供了一种解决方案:

        import numpy as np
        from decimal import *
        
        arr = np.array([  56.83,  385.3 ,    6.65,  126.63,   85.76,  192.72,  112.81, 10.55])
        arr2 = [str(Decimal(i).quantize(Decimal('.01'))) for i in arr]
        
        # ['56.83', '385.30', '6.65', '126.63', '85.76', '192.72', '112.81', '10.55']
        

        【讨论】:

          猜你喜欢
          • 2017-07-15
          • 2015-09-06
          • 2016-05-06
          • 2016-05-12
          • 2018-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多