我正在尝试使用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是太繁琐了,因为我有很多这样的案例。
答案 0 :(得分:1)
不太确定您的出版物需要什么,但如果您只需要某种列表中的数字,则可以使用这样的字符串格式:
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']
答案 1 :(得分: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 :(得分:0)
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']