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