打印 NumPy 数组#
本页面介绍如何控制打印 NumPy 数组的格式。请注意,这些打印选项仅适用于数组,不适用于标量。
定义打印选项#
全局应用设置#
使用 numpy.set_printoptions 来更改整个运行时会话的打印选项。要检查当前的打印设置,请使用 numpy.get_printoptions
>>> np.set_printoptions(precision=2)
>>> np.get_printoptions()
{'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 2, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False, 'override_repr': None}
要恢复默认设置,请使用
>>> np.set_printoptions(edgeitems=3, infstr='inf',
... linewidth=75, nanstr='nan', precision=8,
... suppress=False, threshold=1000, formatter=None)
临时应用设置#
使用 numpy.printoptions 作为上下文管理器,在特定范围内临时覆盖打印设置
>>> arr = np.array([0.155, 0.184, 0.173])
>>> with np.printoptions(precision=2):
... print(arr)
[0.15 0.18 0.17]
所有适用于 numpy.set_printoptions 的关键字也适用于 numpy.printoptions。
更改精度位数#
默认显示的整数位数是 8。您可以使用 precision 关键字更改此数字。
>>> arr = np.array([0.1, 0.184, 0.17322])
>>> with np.printoptions(precision=2):
... print(arr)
[0.1 0.18 0.17]
“floatmode” 选项决定了“precision”设置的解释方式。默认情况下,“floatmode=maxprec_equal”以能够唯一表示它们所需的最小位数显示值,并在所有元素中使用相同数量的位数。如果您想显示由“precision”指定的完全相同数量的位数,请使用“floatmode=fixed”
>>> arr = np.array([0.1, 0.184, 0.173], dtype=np.float32)
>>> with np.printoptions(precision=2, floatmode="fixed"):
... print(arr)
[0.10 0.18 0.17]
更改 nan 和 inf 的显示方式#
默认情况下,numpy.nan 显示为 nan,numpy.inf 显示为 inf。您可以使用 nanstr 和 infstr 选项覆盖这些表示。
>>> arr = np.array([np.inf, np.nan, 0])
>>> with np.printoptions(nanstr="NAN", infstr="INF"):
... print(arr)
[INF NAN 0.]
控制科学计数法#
默认情况下,NumPy 在以下情况下使用科学计数法:
最小数字的绝对值小于
1e-4,或者最大绝对值与最小绝对值的比率大于
1e3>>> arr = np.array([0.00002, 210000.0, 3.14]) >>> print(arr) [2.00e-05 2.10e+05 3.14e+00]
要禁止科学计数法并始终使用定点表示法,请设置 suppress=True
>>> arr = np.array([0.00002, 210000.0, 3.14])
>>> with np.printoptions(suppress=True):
... print(arr)
[ 0.00002 210000. 3.14 ]
应用自定义格式函数#
您可以使用 formatter 关键字将自定义格式函数应用于特定或所有数据类型。有关支持的格式键的更多详细信息,请参阅 numpy.set_printoptions。
例如,使用自定义函数格式化 datetime64 值
>>> arr = np.array([np.datetime64("2025-01-01"), np.datetime64("2024-01-01")])
>>> with np.printoptions(formatter={"datetime":lambda x: f"(Year: {x.item().year}, Month: {x.item().month})"}):
... print(arr)
[(Year: 2025, Month: 1) (Year: 2024, Month: 1)]