【发布时间】:2016-03-12 16:39:46
【问题描述】:
我有一个排序的、唯一的 numpy 字符数组:
import numpy as np
vocab = np.asarray(['a', 'aaa', 'b', 'c', 'd', 'e', 'f'])
我还有另一个未排序的数组(实际上我有数百万个):
sentence = np.asarray(['b', 'aaa', 'b', 'aaa', 'b', 'z'])
第二个数组比第一个数组小得多,并且还可能包含原始数组中没有的值。
我想要做的是将第二个数组中的值与其对应的索引相匹配,返回nan 或一些特殊值用于不匹配。
例如:
sentence_idx = np.asarray([2, 1, 2, 1, 2, np.nan])
我用 np.in1d 尝试了几个不同的匹配函数迭代,但它似乎总是在包含重复单词的句子上分解。
我也尝试了几种不同的列表理解,但它们太慢了,无法在我的数百万个句子的集合中运行。
那么,在 numpy 中完成此任务的最佳方法是什么?在 R 中,我会使用 match 函数,但似乎没有 numpy 等效项。
【问题讨论】: