我想知道如何根据每个数组值的"键"来对齐两个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')
注意:此方法将生成具有相同顺序的新数组