打印完整的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数组,以生成一个大小为5×3,值介于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()创建一个包含40个连续值的数组,起始值为0. 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数组,就像在第一个示例中所做的那样。通过使用set_printoptions()将阈值设置为’sys.maxsize’,我们将显示整个数组。在这里,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’表示没有截断的阈值。
示例
在以下示例中,我们将创建一个由大小为5×5的随机numpy数组组成的数组,填充值介于0和1之间。为了打印完整的数组而不截断,我们将使用np.array2string()方法,通过传递numpy数组并将阈值参数设置为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数组的所有元素而不截断。