如何更改将 float('inf') 转换为 str 的 python 方式?

How to change python way of casting float('inf') to str?

我的应用程序正在处理数字,其中有 python 个 float('inf')。 问题是我希望将这样的数字转换为完整的单词:"Infinity".

for x in [float('inf'), float(5.0)]:
    print(x)

结果:

inf
5.0

我希望它是:

Infinity
5.0

我能以某种方式设置无穷大在字符串中的表示方式吗?

当然我可以做类似下面的方法:

def cast_num(num):
    if num == float('inf')
        return 'Infinity'
    else:
        return str(num)

但是这种方法成本很高——它必须处理每个数字。

有更好的选择吗?

python 中是否有一些我可以设置的标志? (喜欢 'setlocale')

使用 numpy,这对您来说可能是一个不错的解决方案:

import numpy as np

x = np.array([2.0, float('inf'), 5.0], dtype='<U8')

x[x=='inf'] = 'Infinity'
x

另一种方法是使用简单的字典:

values = {float('inf'):'Infinity'}
i = float('inf')
p = 0.5
print(values.get(i, str(i)))
print(values.get(p, str(p)))

输出

Infinity
0.5