1

我正在尝试映射一个颜色直方图,其中每个像素也作为另一个(浮动)属性,alpha,来自类似大小的数组。我最终希望有一个 (color) -> (count, sum) 的字典,其中 count 实际上是该颜色的直方图计数,而 sum 是对应于某种颜色的 alpha 值的总和。

这是一个简单的python代码,可以满足我的要求(c和d的长度相同,而且很长):

for i in range(len(c)):
        if str(c[i]) in dict:
            dict[str(c[i])][0] += 1
            dict[str(c[i])][1] += alpha[i]
        else:
            dict[str(c[i])] = [0, alpha[i]]

但这自然需要很多时间。关于 numpy 等价物的任何想法?

谢谢

4

1 回答 1

0

好的,所以我最终使用这个答案找到了一个非常好的解决方案,仅使用 numpy: https ://stackoverflow.com/a/8732260/1752591

这是一个根据另一个索引向量对向量求和的函数。所以我所要做的就是为每种颜色提供一个 id,然后制作字典:

d = alpha.reshape((-1))
id = color_code_image(colormap)

v, g = sum_by_group(d, id)
count, g = sum_by_group(np.ones(len(d)), id)
avg = v/count

return dict(np.array([g, avg]).T)
于 2013-09-18T08:46:09.777 回答