numpy中的axis

首先参考这个,其次记录一些个人的理解。
如下,构造一个三维数组

import numpy as np
a = np.random.randint(2,10,(3,4,2))
'''[[[8 7]
  [7 4]
  [2 6]
  [2 3]]

 [[8 6]
  [6 8]
  [8 6]
  [6 6]]

 [[3 7]
  [9 4]
  [4 4]
  [5 3]]]'''
print(a.shape)
'''(3,4,2)'''
print(np.mean(a,axis = 0))
'''[[6.33333333 6.66666667]
 [7.33333333 5.33333333]
 [4.66666667 5.33333333]
 [4.33333333 4.        ]]'''
print(np.mean(a,axis = 1))
'''[[4.75 5.  ]
 [7.   6.5 ]
 [5.25 4.5 ]]'''
print(np.mean(a,axis = 2))
'''[[7.5 5.5 4.  2.5]
 [7.  7.  7.  6. ]
 [5.  6.5 4.  4. ]]'''

当axis = 0时,第一个元素 = (a[0][0][0] + a[1][0][0] + a[2][0][0])/3 = (8 + 8 + 3)/3 = 6.33333333,其他的以此类推。
根据以上链接所述

设axis=i,则Numpy沿着第i个下标变化的方向进行操作

个人的理解是,对于axis = i,该矩阵的值在第 i 维度下的操作。也就是说,np.mean(a,axis = 0)就是在第 0 维度下每个对应数据的均值,即

mean_0 = (a[0] + a[1] + a[2])/3#(a[0,:,:] + a[1,:,:] + a[2,:,:])/3 axis = 0
mean_1 = (a[:,0,:] + a[:,1,:] + a[:,2,:] + a[:,3,:])/4#axis = 1
mean_3 = (a[:,:,0] + a[:,:,1])#axis = 2

此外,不难发现,当axis = i时,操作后的数据的大小为剩下的维度,比如

print(a.shape)
'''(3,4,2)'''
print(np.mean(a,axis = 0).shape)
'''(4,2)'''
print(np.mean(a,axis = 1).shape)
'''(3,2)'''

当实在不知道怎么确定axis的时候,根据想要结果的shape就可以确定axis了。

你可能感兴趣的:(numpy中的axis)