2017-07-04 84 views
1

我有一套標籤tags和所有可能標籤taglist的有序列表。現在我想將一組標籤轉換成「多重熱」編碼,即得到一個長度與taglist相同的列表或元組,其中有一個地方,其中歸屬標記位於其他地方,零點位於其他地方。如何在Python中將標記集轉換爲屬性元組(「多熱」編碼)?

目前我做traightforward:

 multihot = [] 
     for i in range(len(taglist)): 
      tag = taglist[i] 
      if tag in tags: 
       multihot.append(1) 
      else: 
       multihot.append(0) 

是否可以寫一行程序?

回答

1

你可以用列表理解達到它,附加條件標籤是否在標籤,如果是,插入1,否則爲0

multihot = [1 if tag in tags else 0 for tag in taglist] 
2
multihot = [(tag in tags) for tag in tag_list] 

multihot現在包含True或False條目。在Python中,True的行爲與1完全相同,False的值爲0;所以這相當於你的解決方案。