美文网首页
numpy中的axis

numpy中的axis

作者: zyyupup | 来源:发表于2019-04-03 17:26 被阅读0次

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

    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

          本文链接:https://www.haomeiwen.com/subject/zjvzbqtx.html