numpy.mean,sum,max,min等函数中都有keepdims这个参数,这个参数的作用:
当 keepidms=True,保持其二维或者三维的特性,(结果保持其原来维数)
默认为 False,不保持其二维或者三维的特性.(结果不保持其原来维数)
假设我们有一个二维数组A,其中A的形状为(3,2),我们想要求A的所有元素之和。我们可以使用Numpy的sum()方法来实现这个操作。代码如下所示:
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
sum = np.sum(A)
print(sum)
这个脚本的输出结果是21。现在我们将keepdims设置为True,代码如下所示:
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
sum = np.sum(A, keepdims=True)
print(sum)
这个脚本的输出结果是[[21]]。在这里,我们可以看到输入A是一个二维数组,但输出结果sum是一个一维数组。在keepdims设置为True时,np.sum()返回一个具有与输入A相同数目的轴的数组,而这些轴中有一个的长度始终为1。也就是说,在本例中,输出结果sum的形状为(1,1)。
如果我们没有设置keepdims为True,并且继续使用以上的代码,会输出一个数字21,且A的维度无法保留。因此,在需要保留输入数组维度的情况下,与保留的轴的长度为1相对应,应将keepdims设置为True。
np.mean()
np.mean()方法计算数组中元素的平均值。如果我们将keepdims设置为True,结果数组将具有与输入数组相同的形状。例如,假设我们有一个四维数组B,形状为(4,3,2,1),我们想要计算B中的元素平均值。代码如下所示:
import numpy as np
B = np.ones((4,3,2,1))
mean = np.mean(B, keepdims=True)
print(mean.shape)
这个脚本的输出结果是(1,1,1,1)。在这里,np.mean()方法使用了输入B数组并返回一个形状与B相同的数组。
np.max()
np.max()方法计算数组的最大值。如果将keepdims设置为True,则结果数组将具有与输入数组相同的形状。例如,假设我们有一个三维数组C,它的形状为(2,3,4),我们想要计算C中的最大值。代码如下所示:
import numpy as np
C = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
max = np.max(C, axis=(0,1), keepdims=True)
print(max.shape)
这个脚本的输出结果是(1,1,4)。在这里,我们可以看到输出数组使用相同的形状(2,3,4),并将轴(0,1)的最大值保留。因此,输出的结果是一个形状为(1,1,4)的数组,它具有与输入数组C第三维相同的形状。
np.std()
np.std()方法计算给定数组的标准差。如果将keepdims设置为True,则结果数组将具有与输入数组相同的形状。例如,假设我们有一个一维数组D,其形状为(6,),我们想要计算D的标准差。代码如下所示:
import numpy as np
D = np.array([1, 2, 3, 4, 5, 6])
std = np.std(D, keepdims=True)
print(std.shape)
这个脚本的输出结果是(1,)。在这里,我们可以看到输出数组使用与输入数组相同的形状,而不是标量结果。