关于numpy mean函数的axis参数

 

import numpy as np
X = np.array([[1, 2], [4, 5], [7, 8]])
print np.mean(X, axis=0, keepdims=True)
print np.mean(X, axis=1, keepdims=True)

结果是分别是

            [[ 1.5]
 [[ 4.  5.]]      [ 4.5]    
                  [ 7.5]]

axis=0,那么输出矩阵是1行,求每一列的平均(按照每一行去求平均);axis=1,输出矩阵是1列,求每一行的平均(按照每一列去求平均)。还可以这么理解,axis是几,那就表明哪一维度被压缩成1。

实际上这个axis=0就是选择shape中第一个元素(即第一维)变为1,axis=1就是选择shape中第二个元素变为1。用shape来看会比较方便。

>>> x = np.array([[1, 2], [4, 5], [7, 8]])
>>> x.shape
(3, 2)
>>> y = np.mean(x, axis=0, keepdims=True)
>>> y.shape
(1, 2)

再举个更复杂点的例子,比如我们输入为batch = [128, 28, 28],可以理解为batch=128,图片大小为28×28像素,我们相求这128个图片的均值,应该这么写

m = np.mean(batch, axis=0)

输出结果m的shape为(1,28,28),就是这128个图片在每一个像素点平均值。

 

 

不给出axis不是默认axis为0,而是把所有元素加起来求平均

    >>> a = np.array([[1, 2], [3, 4]])
    >>> np.mean(a)
    2.5

 

posted @ 2017-03-03 11:14  有梦就要去实现他  阅读(3926)  评论(0编辑  收藏  举报