如何打印完整的NumPy数组而不截断?
当我打印一个numpy数组时,显示的内容被截断了,我想看到完整的数组。
>>> numpy.arange(10000)
array([ 0, 1, 2, ..., 9997, 9998, 9999])
>>> numpy.arange(10000).reshape(250,40)
array([[ 0, 1, 2, ..., 37, 38, 39],
[ 40, 41, 42, ..., 77, 78, 79],
[ 80, 81, 82, ..., 117, 118, 119],
...,
[9880, 9881, 9882, ..., 9917, 9918, 9919],
[9920, 9921, 9922, ..., 9957, 9958, 9959],
[9960, 9961, 9962, ..., 9997, 9998, 9999]])
23 个回答
234
临时设置
你可以使用 printoptions
这个上下文管理器:
with numpy.printoptions(threshold=numpy.inf):
print(arr)
(当然,如果你是用 np
来导入 numpy
,就把 numpy
替换成 np
)
使用上下文管理器(也就是 with
这个块)可以确保在这个块执行完后,打印选项会恢复到之前的状态。这就保证了这个设置是临时的,只会影响到这个块里的代码。
想了解更多关于上下文管理器和它支持的其他参数,可以查看 numpy.printoptions
的文档。这个功能是在 NumPy 1.15 版本中引入的(发布于2018年7月23日)。
310
import numpy as np
np.set_printoptions(threshold=np.inf)
我建议使用 np.inf
,而不是其他人提到的 np.nan
。这两者都能达到你的目的,但把阈值设置为“无穷大”会让所有看你代码的人都能明白你的意思。而“不是一个数字”的阈值对我来说感觉有点模糊。
971
import sys
import numpy
numpy.set_printoptions(threshold=sys.maxsize)