Python 如何从numpy.ndarray获取所有独特的单词?
我有以下资料:X_火车:[,]] 我想得到一个所有独特单词的列表。 我怎样才能以最快的方式完成?Python 如何从numpy.ndarray获取所有独特的单词?,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我有以下资料:X_火车:[,]] 我想得到一个所有独特单词的列表。 我怎样才能以最快的方式完成? 感谢您提供的任何可能的帮助。我不确定您是否关心标题和描述中的文字,因此这两个部分都有,但可以轻松修改 如果你想追踪独特的东西,集合通常是一种很好的类型,因为它不允许你添加多个相同的元素 此代码将在所有标题和描述中建立一组独特的单词。我添加了忽略列表,以防您希望忽略某些特殊单词。如果需要,可以使用正则表达式使其更加复杂 import numpy as np arr = np.array([['Boo
感谢您提供的任何可能的帮助。我不确定您是否关心标题和描述中的文字,因此这两个部分都有,但可以轻松修改 如果你想追踪独特的东西,集合通常是一种很好的类型,因为它不允许你添加多个相同的元素 此代码将在所有标题和描述中建立一组独特的单词。我添加了忽略列表,以防您希望忽略某些特殊单词。如果需要,可以使用正则表达式使其更加复杂
import numpy as np
arr = np.array([['Boots new', 'Boots 46 size new'], ['iPhone 7 plus 128GB Red',
'\xa0/\n/\n The price is only for Instagram subscribers']],
dtype=object)
words = set()
ignore = ["/", "7"]
for title, description in arr:
words.update(set(word for word in title.strip().split() if word not in ignore))
words.update(set(word for word in description.strip().split() if word not in ignore))
print(words)
这张照片
{'price', 'Boots', 'subscribers', 'size', '46', 'Instagram', '128GB', 'new', 'plus', 'iPhone', 'is', 'only', 'for', 'The', 'Red'}
我用你的例子作为数据。但是不管数组的大小,这段代码都可以工作
data = np.array([['Boots new', 'Boots 46 size new'],
['iPhone 7 plus 128GB Red','\xa0/\n/\n The price is only for Instagram subscribers']])
split_data = np.char.split(data, sep =' ')
all_words = np.sum(split_data)
unique_words = np.unique(all_words)
split_data
将单词存储在列表中,因此简单的列表求和将给出所有单词。以后您可以使用np.unique
函数。我认为您正在寻找的np.unique我不确定在我的情况下如何实现它。我应该创建一个包含所有单词的新数组吗?你需要寻找向量化它。预处理包括——停止字删除、标记化、基于数据的其他删除等。。然后你会创建一个单词包或tfidf?我实际上需要在不进行矢量化的情况下处理BOW。因此,第一步是从ndarray获得独特的单词。我不知道如何。不知道为什么拆分会给我一个错误:非字符串数组上的字符串操作。它与dtype=object
part有关。我不知道为什么你需要使用对象
数组,但你可以在数组定义的末尾添加.astype(np.str)
,然后函数将得到它所需的输入。还有一条注释,由于我的声誉,我无法在@ryanh153的帖子下发表,如果数组可以随时间动态更改,则使用这种“title
和description
fixed”方法不是最好的方法-它们假定此数组具有固定规则,而不是可归纳的。此外,由于时间问题,强烈反对将循环与numpy数组一起使用。如果输入数组的大小变大,使用循环将非常耗时。如果您根本不想更改数组,也可以使用split\u data=np.char.split(data.astype(np.str),sep='')
。
data = np.array([['Boots new', 'Boots 46 size new'],
['iPhone 7 plus 128GB Red','\xa0/\n/\n The price is only for Instagram subscribers']])
split_data = np.char.split(data, sep =' ')
all_words = np.sum(split_data)
unique_words = np.unique(all_words)