np.max() 按维度获取最大值解析

话不多说直接上例子:

二维矩阵

a = np.random.random((3,2))

输出:

[[0.47, 0.84 ]
[0.08, 0.12]
[0.77, 0.02]]

不指定维度:

print(np.max(a))   #不指定维度 全部检索数据

输出:
0.84

指定维度:

沿 0 维检索:

print(np.max(a, axis = 0))   #指定维度,沿 0 维检索

输出:
[0.77 0.84]

解析: 按0维的方向比较大小,0维是哪个方向?是3X2矩阵下每个2X1一维向量的方向,如果不清楚可以看我之前的博文:tensor维度的理解
直观的理解就是上下方向,所以比较的路线为:
0.47, 0.08, 0.77 得到最大:0.77
0.84, 0.12, 0.02 得到最大: 0.84

得到的结果[0.77, 0.84]

沿 1 维检索:

print(np.max(a, axis = 1))   #沿 1 维检索

输出:
[0.84, 0.12,0.77]
解析: 按1维的方向比较大小,1维是哪个方向?是每个2X1一维向量内的数值的方向,直观的理解就是左右方向,所以比较的路线为:
0.47, 0.84 得到最大:0.84
0.08, 0.12 得到最大:0.12
0.77, 0.02 得到最大:0.77

得到结果[0.84, 0.12,0.77]

不难发现,实际上这是一个用max()函数进行降维的操作,所以输出的形状和维度有关。

三维矩阵

a = np.random.random((3,2,2))
print(a)

输出:
[
[[0.77, 0.42]
[0.76, 0.75]]

[[0.84, 0.69]
[0.24, 0.31]]

[[0.77, 0.22]
[0.41, 0.28]]
]

不指定维度:

print(np.max(a))   #不指定维度 全部检索数据

输出:
0.84

指定维度:

沿 0 维检索:

print(np.max(a, axis = 0))   #指定维度,沿 0 维检索

输出:
[[0.84, 0.69]
[0.76, 0.75]]

解析: 按0维的方向比较大小,可以理解为按0维方向用max()进行降维或者压缩,位置一一对应,所以结果肯定是2X2的矩阵。比较路线是:
0.77, 0.84, 0.77 得到最大:0.84 ,位置是[0,0]
0.42, 0.69, 0.22 得到最大:0.69 ,位置是[0,1]
0.76, 0.24, 0.41 得到最大:0.76 ,位置是[1,0]
0.75, 0.31, 0.28 得到最大:0.75,位置是[1,1]

沿 1 维检索:

print(np.max(a, axis = 1))   	#沿 1 维检索

输出:
[[0.77, 0.75]
[0.84, 0.69]
[0.77, 0.28]]

解析: 按1维的方向比较大小,一样的原理,按1维方向用max()进行降维或者压缩,不做过多解释。

沿 2 维检索:

print(np.max(a, axis = 2))   	#沿 2 维检索

输出:
[[0.77, 0.76]
[0.84,0.31]
[0.77, 0.41]]

[2020/6/18 add]

为了更直观和好理解,添加一个附带图片的例子:

你可能感兴趣的:(tensor)