根据数组键对齐numpy数组



我想知道如何根据每个数组值的"键"来对齐两个numpy数组,以便在NLP中使用(我意识到这可能更容易用NLTK完成,但我尽量不将其用于此实现)。

例如,假设我有两个数组定义为:
array1 = [['dolor' 5] ['sit' 3] ['amet' 1]]
array2 = [['scripsit' 10] ['sit' 1] ['amet' 1]]

我希望输出数组如下:

array1 = [['scripsit' 0] ['dolor' 5] ['sit' 3] ['amet' 1]]
array2 = [['scripsit' 10] ['dolor' 0] ['sit' 1] ['amet' 1]]

这可能吗?

首先,您可以获得唯一键,然后创建数组的字典视图,并使用列表推导来创建所需的输出:

>>> all_keys=np.unique(np.array((array1,array2)).T[0])
>>> dict1=dict(array1)
>>> dict2=dict(array2)
>>> array1=np.array([[i,dict1.get(i,0)] for i in all_keys])
>>> array1
array([['amet', '1'],
       ['dolor', '5'],
       ['scripsit', '0'],
       ['sit', '3']], 
      dtype='|S8')
>>> array2=np.array([[i,dict2.get(i,0)] for i in all_keys])
>>> array2
array([['amet', '1'],
       ['dolor', '0'],
       ['scripsit', '10'],
       ['sit', '1']], 
      dtype='|S8')

注意:此方法将生成具有相同顺序的新数组

最新更新