在嵌套的numpy数组中计算频率

时间:2015-11-11 06:22:25

标签: python image opencv numpy

我想计算图像的相同像素频率。 src ndarray:

[
 [1, 2, 3],
 [1, 2, 3],
 [5, 6, 7]
]

我想要的结果是:

[
 [1, 2, 3, 2],
 [5, 6, 7, 1]
]

但是numpy.unique或numpy.bincount无法正常工作。

2 个答案:

答案 0 :(得分:0)

这会有效吗?

from collections import Counter
import numpy as np
In [17]: freq = Counter(np.array(lst).flatten())
In [18]: freq
Out[18]: Counter({1: 2, 2: 2, 3: 2, 5: 1, 6: 1, 7: 1})

答案 1 :(得分:0)

你在处理[0..255]范围内的RGB值吗?在这种情况下,您可以试试这个。

你从:

开始
import numpy as np
a = np.array([[1,2,3],[1,2,3],[5,6,7]])

在([0..255],[0..255],[0..255])和[0..16777215]之间创建一个双射:

a_ = a[:,0]*256**2 + a[:,1]*256 + a[:,0]

申请bincount:

b_ = np.bincount(a_)

应用互惠双射:

h = []
for i,e in enumerate(b_):
    if e:
      b = i%256
      g = (i//256)%256
      r = i/65536
      h.append([r,g,b,e])

你想要的是什么?