打印完整 NumPy 数组而不截断


NumPy 是一个功能强大的 Python 库,用于处理大型多维数组。但是,在打印大型 NumPy 数组时,解释器通常会截断输出以节省空间,并且仅显示该数组的几个元素。在本文中,我们将展示如何打印完整的 NumPy 数组而不截断。

为了正确理解问题陈述,请考虑以下示例

输入

aray = np.arange(1100)

输出

[   0    1    2 ... 1097 1098 1099]

在上面的示例中,我们创建了一个包含 1100 个元素的数组。当我们打印它时,Python 解释器会自动将其截断,只显示一小部分输出,如上所示。它使用三个点(…)来指定某些元素未显示。

Python 程序打印完整的 NumPy 数组而不截断

要打印 NumPy 数组的所有元素而不截断,我们可以使用以下方法

  • set_printoptions()

  • array2string()

使用 set_printoptions()

NumPy 的 set_printoptions() 方法允许我们修改打印数组时显示的方式。要打印整个数组,我们将 'threshold' 参数设置为 'np.inf'。

示例 1

以下示例说明了如何使用 set_printoptions() 打印完整的 NumPy 数组而不截断。

方法

  • 第一步是导入 NumPy 包,并使用引用名称 'np'。

  • 接下来,我们使用 random.rand() 方法创建一个 NumPy 数组,以生成一个大小为 5x3 的随机数组,其中填充的值介于 0 和 1 之间。

  • 现在,使用 set_printoptions() 通过将 threshold 参数设置为 np.inf 来显示整个数组。这里,np.inf 表示没有阈值。

  • 最后,我们使用内置方法 print() 来显示结果。

import numpy as np
# generating a random NumPy array
aray = np.random.rand(5, 3)
# Setting the print options 
np.set_printoptions(threshold = np.inf)
# to print the generated array 
print(aray)

输出

[[0.20389255 0.29142771 0.26634027]
 [0.95128389 0.11253549 0.55029953]
 [0.42578651 0.26762357 0.0058134 ]
 [0.47427662 0.080491   0.98576308]
 [0.29514599 0.44207715 0.51177261]]

示例 2

在本例中,我们不会生成随机数组,而是使用 NumPy 的内置方法 arange() 创建一个包含从 0 开始的 40 个连续值的数组。arange() 方法返回一个 NumPy 数组。

import numpy as np
# creating a NumPy array with 40 values
aray = np.arange(40)
# Setting the print options here
np.set_printoptions(threshold = np.inf)
# to display the result
print(aray)

输出

[ 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]

示例 3

这是另一个示例,展示了如何打印完整的 NumPy 数组而不截断。在这个特定的示例中,我们将使用 random.rand() 方法创建 NumPy 数组,就像我们在第一个示例中所做的那样。通过将 threshold 设置为 'sys.maxsize' 使用 set_printoptions(),我们将显示整个数组。这里,sys.maxsize 属性提供了当前系统中可以表示为整数的最大值。

# importing the required packages
import numpy as np
import sys
# generating a random NumPy array
aray = np.random.rand(5, 3)
# Setting the print options 
np.set_printoptions(threshold = sys.maxsize)
# to display the result
print(aray)

输出

[[0.83641797 0.63958049 0.22548871]
 [0.07813775 0.75781466 0.0283849 ]
 [0.79322127 0.2648928  0.19495721]
 [0.44913602 0.17464489 0.67625814]
 [0.55415935 0.40091674 0.1828985 ]]

使用 array2string()

NumPy 的 array2string() 方法将给定数组转换为字符串表示形式。同样,要打印整个数组,我们将传递给定的数组作为参数,并将名为 'threshold' 的附加参数设置为 'np.inf'。'np.inf' 表示没有截断阈值。

示例

在下面的示例中,我们将创建一个大小为 5x5 的随机 NumPy 数组,其中填充的值介于 0 和 1 之间。要打印整个数组而不截断,我们将使用 np.array2string() 方法,传递 NumPy 数组并将 threshold 参数设置为 np.inf。

import numpy as np
# generating a random NumPy array
aray = np.random.rand(5, 5)
# Converting the array to a string 
arr_st = np.array2string(aray, threshold = np.inf)
# to print the converted array string
print(arr_st)

输出

[[0.20558096 0.63450548 0.84019308 0.80807701 0.50960877]
 [0.30689032 0.54547474 0.23338944 0.67067941 0.81017394]
 [0.69467855 0.57111774 0.98147844 0.4711527  0.85500914]
 [0.83951451 0.83768907 0.027058   0.06053751 0.57541982]
 [0.45509108 0.6337008  0.65374078 0.38031754 0.0921497 ]]

结论

在本文中,我们学习了两种使用示例程序打印完整 NumPy 数组而不截断的方法。这两种方法是 array2string() 和 set_printoptions() 方法。它们都采用一个名为 'threshold' 的参数,该参数可以设置为 'np.inf' 或 'sys.maxsize' 以打印 NumPy 数组的所有元素而不截断。

更新于: 2023-07-21

7K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告