首先参考这个,其次记录一些个人的理解。
如下,构造一个三维数组
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了。
网友评论