该解决方案比注释和答案中提供的解决方案简单得多——即,不需要对元组进行计算,也不需要对单元格值进行嵌套循环迭代。
特别是,如果您有一个灰度图像,那么您有一个二维数组,其中的数组单元格由0到1的标量值填充。
相比之下,彩色图像是一个2D NumPy数组,其中rgb元组位于每个单元格中。
换句话说:灰度图像的NumPy数组表示是一个二维数组,其单元格的浮点值在0(黑色)和1(白色)之间
因此,可以通过计算图像阵列的两个轴上的平均值来计算平均像素值,如下所示:>>> import numpy as NP
>>> img = NP.random.rand(100, 100)
>>> img[:5, :5]
array([[ 0.824, 0.864, 0.731, 0.57 , 0.127],
[ 0.307, 0.524, 0.637, 0.134, 0.877],
[ 0.343, 0.789, 0.758, 0.059, 0.374],
[ 0.693, 0.991, 0.458, 0.374, 0.738],
[ 0.237, 0.226, 0.869, 0.952, 0.948]])
这一行代码将执行您想要的操作——为数组中的每个轴计算两次平均值,一次(不需要为第二次调用mean指定轴,因为第一次调用的返回值只是一个1D数组>>> img.mean(axis=0).mean()
0.50000646872609511
0.5的值似乎是正确的,因为数组值是通过调用NP.random.rand生成的,它返回在半开区间[0,1]上从均匀分布中采样的值>>> import matplotlib.pyplot as MPL
>>> MPL.imshow(img, cmap=MPL.cm.gray, interpolation='nearest')
>>> MPL.show()