我们的想法是创建一个数组,其中第一个原始值中的值对应于管理单元的ID。第一列对应于此管理单元内的图像的标签。每张图片都有几个标签。因此,我们的想法是检查是否有任何标签已经附加到数组中,如果它们第一次出现,那么我会附加它们。如果之前出现的标签比此标签交叉处的元素和管理单元的ID应增加1(在第一次出现的情况下也是如此)。我已经堆积在这一部分了。所以,让我们说行政单位的ID是1,36,15,20,16,3。我知道现在我用标签分析图像狮子,牛,猫,熊猫和#39 ;在ID = 36的行政单位中。在我有标记“门”之前的某个地方,它在不同的行政单位中出现了好几次。所以我想有一个数组,看起来像:
[0, 1, 36, 15, 20, 16, 3],
['door', 5, 0, 0, 4, 0, 1],
['lion', 0, 1, 0, 0, 0, 0],
['cow', 0, 1, 0, 0, 0, 0],
['cat', 0, 1, 0, 0, 0, 0],
['panda', 0, 1, 0, 0, 0, 0]
到目前为止,我有空间部分,并且:
import numpy as np
tags_array = []
np.asarray(tags_array)
tags_array[0:] = [1, 36, 15, 20, 16, 3]
tags = 'lion,cow,cat,panda'
tags_sep = tags.split(',')
my_id = 36
for tag in tags_sep:
#if tag is not yet in the array
tags_array.append(tag) #to the first column
tags_array.append(1) #to the column with the first row equal to 36
#else add +1 to the element in the column 36 and row of the tag
任何提示都非常感谢!
答案 0 :(得分:1)
如果您使用字典更容易,那么您可以轻松地将其更改为您想要的数组:
tags = 'lion,cow,cat,panda'.split(",")
id = 36
for i in range(len(tags)):
if not id in ids:
ids = np.append(ids, id)
for key in dico.keys():
dico[key] = np.append(dico[key], 0)
if not tags[i] in dico.keys():
dico[tags[i]] = np.zeros(len(ids)).astype(int)
dico[tags[i]][int(np.where(ids==id)[0])] = 1
else:
dico[tags[i]][int(np.where(ids==id)[0])] += 1
当然,在您使用标记作为键定义dico
之前:
dico={}
dico['door'] = [5, 0, 0, 4, 0, 1]
dico['lion'] = [0, 0, 0, 0, 0, 0]
dico['cow'] = [0, 0, 0, 0, 0, 0]
dico['cat'] = [0, 0, 0, 0, 0, 0]
dico['panda'] = [0, 0, 0, 0, 0, 0]
和ids
:
ids = np.array([1, 36, 15, 20, 16, 3])