如何找到不同值的坐标?

2024-05-19 01:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 1 1 1 0 0 0 0 0 1 1 0 0 3 3 0 0 0 4 4 0 0 0 5 5 5 5 0 0 2 2 2 2 2 0 2 2 2 2 2 0 0 0 6 6 6 6 6 6 0 6 6 6 6]
 [0 1 1 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 4 4 0 0 5 5 5 5 5 5 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 6 6 6 6 6 6 6 6 6 6 6]
 [1 1 1 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 4 4 0 5 5 5 0 0 5 5 5 0 2 2 0 0 2 2 0 0 0 2 2 0 0 6 6 0 0 6 6 6 0 0 6 6]
 [1 1 1 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 4 4 0 5 5 5 5 0 0 0 0 0 2 2 0 2 2 2 0 0 0 2 2 2 0 6 6 0 0 0 6 6 0 0 6 6]
 [1 1 1 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 4 4 0 0 5 5 5 5 5 5 0 0 2 2 0 2 2 2 0 0 0 2 2 2 0 6 6 0 0 0 6 6 0 0 6 6]
 [0 1 1 0 0 0 0 0 0 7 0 0 0 3 3 0 0 0 4 4 0 0 0 0 5 5 5 5 5 0 2 2 0 2 2 2 0 0 0 2 2 2 0 6 6 0 0 0 6 6 0 0 6 6]]

下面是一个列表的连接组件列表(50 x 10),我们称之为labels,我想创建一个字典,其中除0之外的数字是该字典的键,与该键对应的值应该是坐标,例如[xmin,xmax,ymin,ymax]

以1为例:

{'1': [0,10,1,9], '2': [......} 

作为python的新手,我发现很难从零开始编写一个程序(不是字典的创建和填充,而是找到坐标)。在numpy中有没有一种方法可以做到这一点,例如np.unique(labels)可以帮助我识别唯一的标签值。你知道吗


Tags: 方法程序numpy列表labels字典np组件
1条回答
网友
1楼 · 发布于 2024-05-19 01:43:11

你需要使用^{}。它返回两个数组:
-第一个包含行索引y
-第二个包含列索引x。你知道吗

import nupmy as np

arr = np.array(labels)

stats = dict()
for i in np.unique(arr):
    if i == 0:
        continue
    else:
        wh = np.where(arr == i)
        stats[i] = [wh[1].min(), wh[1].max(), wh[0].min(), wh[0].max()]

> {1: [0, 10, 1, 9],
   2: [29, 41, 2, 9],
   3: [13, 14, 4, 9],
   4: [18, 19, 4, 9],
   5: [21, 28, 4, 9],
   6: [43, 53, 4, 9],
   7: [9, 9, 9, 9]}

相关问题 更多 >

    热门问题