python numpy mean

# -*- coding:utf-8 -*-

import numpy as np

a = np.array([1,2,3,4,5,6,7,8])
print(a)
b = a.reshape((2,4))
print(b)
c = np.mean(b, axis=0)
print(c)
d = np.mean(b, axis=1)
print(d)
e = a.reshape((2,2,2))
print(e)
f = np.mean(e, axis=0)
print(f)
g = np.mean(e, axis=1)
print(g)

[1 2 3 4 5 6 7 8]  # a 

[[1 2 3 4]
 [5 6 7 8]]  # b

[ 3.  4.  5.  6.]  # c

[ 2.5  6.5]  # d

[[[1 2]
  [3 4]]  # e
 [[5 6]
  [7 8]]]

[[ 3.  4.]
 [ 5.  6.]]  # f

[[ 2.  3.]  # g
 [ 6.  7.]]

可以看出,对二维数组:
axis = 0,将列进行压缩再求均值;axis=1,将行进行压缩再求均值。
对三维数组:
axis = 0,求第一维度均值;axis = 1,求第二维度均值。

我觉得可以这样理解:
对于二维数组,axis = 0,将第二维的有多长y取出来,从0到y-1,令第一维为x,则结果为[b[0到x-1取均值][0],…,b[0到x-1取均值][y-1];axis = 1,结果为[b[0][0到y-1取均值],…,b[x-1][0到y-1取均值]]]。
对于三维数组,三维分别为x,y,z,axis = 0,[[e[0到x-1取均值][0][0],…,e[0到x-1取均值][0][z-1]],…,[e[0到x-1取均值][y-1][0],…,e[0到x-1取均值][y-1][z-1]]];axis = 1,[[e[0][0到y-1取均值][0],…,e[0][0到y-1取均值][z-1]],…,[e[x-1][0到y-1取均值][0],…,e[x-1][0到y-1取均值][z-1]]]。

对于一个500x512x512的数组,axis = 0,得到512x512的,表示取每个图片每个像素的均值。

这和Tensorflow 的reduce_sum()有点类似的地方,有知乎大佬总结了:
https://www.zhihu.com/question/51325408?from=profile_question_card

你可能感兴趣的:(python numpy mean)