长的NumPy数组无法完全打印?

3 投票
3 回答
853 浏览
提问于 2025-04-16 09:00

我想打印两个1001行1列的数组的完整内容,但Python只给我显示了一部分,像这样:

array([[5,45],
       [1,23],
       ......,
       [1,24],
       [2,31]])  

而不是完整的数组。

有没有人能告诉我怎么才能打印出完整的1001行1列的数组呢?

3 个回答

0

以下的方法对我有效:

np.set_printoptions(threshold=sys.maxsize)
6

请查看NumPy教程中的打印数组部分:

如果一个数组太大,无法完整打印,NumPy会自动跳过数组中间的部分,只显示角落的内容:

>>> print(np.arange(10000))
[   0    1    2 ..., 9997 9998 9999]

...

如果你想让NumPy打印整个数组,而不是跳过中间部分,可以通过设置打印选项来实现。

>>> np.set_printoptions(threshold=nan)

np.set_printoptions这个函数是NumPy库的一部分。

0

我猜你可能试过像下面这样的简单语句:

print myarray

... 而不是像下面这样更明确的语句:

for each_item in myarray:
    print each_item

... 或者甚至:

print ', '.join([str(x) for x in myarray])

你看到输出被省略的原因,可能是因为 numpy 在它的 array 类中实现了一个 _str_ 方法,这个方法试图给出一个“合理”的默认字符串表示数组的方式。它们可能认为简单的 print 语句主要是用来调试、记录日志或类似的用途,而结果的报告或者将结果传递给其他进程或存储,应该通过更明确的方式来处理数据(就像我在这里展示的那样)。

撰写回答