为了账号安全,请及时绑定邮箱和手机立即绑定

如何有效地从一个数组中删除另一个数组的元素

如何有效地从一个数组中删除另一个数组的元素

慕的地10843 2023-05-23 10:26:00
我正在对包含大约 135k 文档(每个文档几页)和大约 800k 单词的词汇表的文本语料库进行分析。我注意到大约一半的词汇是频率为 1 或 2 的单词,所以我想删除它们。所以我正在运行这样的东西:remove_indices = np.array(index_df[index_df['frequency'] <= 2]['index']).astype(int)for file_name in tqdm(corpus):    content = corpus[file_name].astype(int)    content = [index for index in content if index not in remove_indices]    corpus[file_name] = np.array(content).astype(np.uint32)哪里corpus看起来像:{    'filename1.txt': np.array([43, 177718, 3817, ...., 28181]).astype(np.uint32),    'filename2.txt': ....}并且每个单词之前都被编码为正整数索引。问题在于每次迭代content = [index for index in content if index not in remove_indices]需要进行多少次检查。len(remove_indices) * len(content)这将花费很长时间(tqdm 告诉我 100h+)。关于如何加快速度的任何提示?到目前为止我试过的利用如果单词只有频率 1 或 2 的事实,我们可以在它remove_indices从语料库中删除后将其删除。仍然需要永远...
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您可以使用numpy.isin()方法

或者,您可以创建一个set现有的单词/索引。那么这个in操作将是一个 O(1) 而不是 O(n) (其中 n 是数组的长度)。


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信