我正在使用 Numpy 和 Python2.7,并且我正在编写一个函数来计算当我读入图像时颜色在每列像素中出现的次数(使用 PIL):
for i in range(wbmp.size[0]):
bcount = 0
for j in range(wbmp.size[1]):
if wbmp.getpixel((i,j)) == 1:
bcount = bcount + 1
bdict[i] = bcount
字典返回为 {Column#: # of times color appears}
,我希望能够对字典中的所有值执行标准偏差。我需要先将它们全部放入列表中吗?还是只能从字典中提取它?
最佳答案
字典中所有值的列表可以通过 bdict.values()
获得,所以你可以这样使用:
std = np.std(bdict.values())
更快的方法是使用更多的 numpy:
img = np.array(img)
colour_mask = img == 1 # or whichever colour you want
per_col_count = colour_mask.sum(axis=0)
std = np.std(per_col_count)
colour_mask
是一个 bool 掩码,沿轴 0 对它求和,将每一列的所有 True
值相加。这势必会快很多,而且随着图像尺寸的增大,差异会越来越大。
关于python - 对字典中的值执行标准偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691677/