多个数组中的numpy计数频率

时间:2019-02-28 06:22:31

标签: python numpy

我有3300个128x128数组(图像),我想计算这些图像中的唯一颜色。

np.unique(task, return_counts = True)

可以为我提供一张图像的独特颜色和计数。

但是为了获得所有这3300张图像的表示形式。我也希望得到所有这些图像的独特结果。

获得独特的颜色很容易,但是计数却很难获得。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

您的问题尚不完全清楚,但我认为您正在询问获取对所有图像中唯一颜色的出现进行计数的最佳方法,实际上是对所有颜色进行直方图绘制。在这种情况下,直方图将具有3000 x 128 x 128个数据点,对吗?

如果是这样,最简单的实现是使用字典(或defaultdict)作为数据结构,颜色作为键,每种颜色的计数作为值。或者,您可以使用Counter模块。

您应该能够找到以下示例:

How can I count the occurrences of a list item?

答案 1 :(得分:0)

您可以将数组列表传递给np.unique

In [11]: a = np.array([[1, 2], [2, 3]])

In [12]: b = np.array([[5, 6], [1, 3]])

In [13] np.unique([a, b], return_counts=True)
Out[13]: (array([1, 2, 3, 5, 6]), array([2, 2, 2, 1, 1]))

注意:np.unique的输出已排序。

答案 2 :(得分:0)

    colors = torch.tensor([])
for i in range(len(Image_list)):

    img_dir = My_directory.format(sub_idx)

    img_str = parc1a_list[i]

    img_arr = io.imread(os.path.join(parc1a_dir, parc1a_str))

    img_tensor = torch.from_numpy(img_arr)

    unique_color = torch.unique(img_tensor).type(torch.FloatTensor)
    colors = torch.cat((colors,unique_color))
colors = torch.unique(colors)
print(colors)
sorted_color, indices = torch.sort(colors)

对不起,我的问题不清楚。我想计算3000张图像的独特颜色。 我创建了一个for循环遍历所有128x128图像并计算数量。 感谢您的所有帮助。