如何打印完整的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]]) 

澄清里德的答复

 import numpy numpy.set_printoptions(threshold=numpy.nan) 

请注意,上面给出的答复适用于初始“从numpy导入*”,这是不可取的。 这也适用于我

 numpy.set_printoptions(threshold='nan') 

有关完整的文档,请参阅http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html

 import numpy as np np.set_printoptions(threshold=np.inf) 

我build议使用np.inf而不是其他人build议的np.nan 。 它们都是为了你的目的而工作的,但是通过把门槛设置为“无穷大”,每个人都明白你的意思。 有一个“不是一个数字”的门槛似乎有点模糊。

这听起来像你使用numpy。

如果是这样的话,你可以添加:

 import numpy as np np.set_printoptions(threshold='nan') 

这将禁用angular落打印。 有关更多信息,请参阅此NumPy教程 。

这是一个一次性的方法来做到这一点,如果你不想改变你的默认设置,这是很有用的:

 def fullprint(*args, **kwargs): from pprint import pprint import numpy opt = numpy.get_printoptions() numpy.set_printoptions(threshold='nan') pprint(*args, **kwargs) numpy.set_printoptions(**opt) 

以前的答案是正确的,但作为一个星期的select,你可以转换成一个列表:

 >>> numpy.arange(100).reshape(25,4).tolist() [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31], [32, 33, 34, 35], [36, 37, 38, 39], [40, 41, 42, 43], [44, 45, 46, 47], [48, 49, 50, 51], [52, 53, 54, 55], [56, 57, 58, 59], [60, 61, 62, 63], [64, 65, 66, 67], [68, 69, 70, 71], [72, 73, 74, 75], [76, 77, 78, 79], [80, 81, 82, 83], [84, 85, 86, 87], [88, 89, 90, 91], [92, 93, 94, 95], [96, 97, 98, 99]] 

Paul Pricebuild议使用上下文pipe理器

 import numpy as np class fullprint: 'context manager for printing full numpy arrays' def __init__(self, **kwargs): if 'threshold' not in kwargs: kwargs['threshold'] = np.nan self.opt = kwargs def __enter__(self): self._opt = np.get_printoptions() np.set_printoptions(**self.opt) def __exit__(self, type, value, traceback): np.set_printoptions(**self._opt) a = np.arange(1001) with fullprint(): print(a) print(a) with fullprint(threshold=None, edgeitems=10): print(a) 

numpy.savetxt

 numpy.savetxt(sys.stdout, numpy.arange(10000)) 

或者如果你需要一个string:

 import StringIO sio = StringIO.StringIO() numpy.savetxt(sio, numpy.arange(10000)) s = sio.getvalue() print s 

默认的输出格式是:

 0.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 ... 

并且可以使用更多参数进行configuration。

testingPython 2.7.12,numpy 1.11.1。

对于那些喜欢导入为np的人:

 import numpy as np np.set_printoptions(threshold=np.nan) 

也将工作

这是一个小小的修改(删除了传递额外参数给set_printoptions)的选项set_printoptions) neok的答案。

它显示了如何使用contextlib.contextmanager以较less的代码行轻松创build这样的contextlib.contextmanager

 import numpy as np from contextlib import contextmanager @contextmanager def show_complete_array(): oldoptions = np.get_printoptions() np.set_printoptions(threshold=np.inf) yield np.set_printoptions(**oldoptions) 

在你的代码中可以这样使用:

 a = np.arange(1001) print(a) # shows the truncated array with show_complete_array(): print(a) # shows the complete array print(a) # shows the truncated array (again) 

如果数组太大而无法打印,NumPy会自动跳过数组的中心部分,只打印angular点:要禁用此行为并强制NumPy打印整个数组,可以使用set_printoptions.更改打印选项set_printoptions.

  >>> np.set_printoptions(threshold='nan') ***or*** >>> np.set_printoptions(edgeitems=3,infstr='inf', ... linewidth=75, nanstr='nan', precision=8, ... suppress=False, threshold=1000, formatter=None) 

您也可以reffer numpy文档 numpy文档“或部分”获得更多帮助

它就像Python的范围 ,使用np.range(10001) welcome!