对 numpy 中的格式化程序感到困惑。 set_printoptions

confused about formatter in numpy. set_printoptions

我遇到了下面这段代码:

z=np.arange(0,12)
np.set_printoptions(formatter=dict(int=lambda x: f'{x:4}'))
print(z)

我明白代码在做什么,但我不清楚 dict() 括号内的数量是多少。没有 int= 我们有一个功能。在 numpy 文档中,格式化程序的值应该是可调用项的字典。键应指示相应格式化函数适用的类型。 Callables 应该 return 一个字符串。那么它不应该是 int: 而不是 int= 吗?当我尝试这样做时出现语法错误

符号int=只是关键字参数,传递给方法dict(),相当于

fmt = {"int": lambda x: f'{x:4}'}

其他例子

fmt = dict(int=lambda x: f'{x:4}', float=lambda x: f'{x:4}')
fmt = {"int": lambda x: f'{x:4}', 'float': lambda x: f'{x:10}'}
fmt = dict(int=lambda x: f'{x:4}', float=lambda x: f'{x:10}')
fmt = {"int": lambda x: f'{x:4}', 'float': lambda x: f'{x:10}'}

value = 1
print(fmt[type(value).__name__](value))  #    1

value = 1.1
print(fmt[type(value).__name__](value))  #           1.1

格式化程序字典的键应该是相应数据类型的字符串。检查 docs 是否有 formatter 参数。

d1 = {"int":lambda x: x}
d2 = dict(int=lambda x: x)
d3 = {int:lambda x: x}

print (d1.keys(), d2.keys(), d3.keys())

输出:

dict_keys(['int']) dict_keys(['int']) dict_keys([<class 'int'>])

如您所见,您可以使用 {"int":.....}dict(int=...}