numpy np.sum给出的值高于可能的值

nkkqxpd9  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(173)

我试图找到图像中像素的平均红色值。我写的代码如下:

path = "C:\\Users\\Ariana\\Pictures\\img.jpg"
img = PIL.Image.open(path)
imgarray = np.array(img)
reds = imgarray[:, 0]
avered = np.sum(reds)/len(reds)
print(avered)

输出应该最多为255,因为这是它可以保持的最高像素值,然而,当前输出为275,这应该是不可能的。
我试着在使用np.sum时指定一个轴,我试着使用普通的sum函数,但两种解决方案都输出一个数组作为答案。我是对数组切片不正确还是使用了不正确的np.sum?

lrpiutwd

lrpiutwd1#

你得到2D数组,但然后除以 one 轴的长度而不是元素的数量,考虑下面的简单示例

import numpy as np
arr = np.array([[255,127],[127,255]])
print(len(arr)) # 2
print(np.sum(arr) / len(arr)) # 382.0

为了避免这种情况,您可以使用np.mean函数

import numpy as np
arr = np.array([[255,127],[127,255]])
print(np.mean(arr)) # 191.0

相关问题