Python 如何从numpy.ndarray获取所有独特的单词?

Python 如何从numpy.ndarray获取所有独特的单词?,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我有以下资料:X_火车:[,]] 我想得到一个所有独特单词的列表。 我怎样才能以最快的方式完成? 感谢您提供的任何可能的帮助。我不确定您是否关心标题和描述中的文字,因此这两个部分都有,但可以轻松修改 如果你想追踪独特的东西,集合通常是一种很好的类型,因为它不允许你添加多个相同的元素 此代码将在所有标题和描述中建立一组独特的单词。我添加了忽略列表,以防您希望忽略某些特殊单词。如果需要,可以使用正则表达式使其更加复杂 import numpy as np arr = np.array([['Boo

我有以下资料:X_火车:[,]]

我想得到一个所有独特单词的列表。 我怎样才能以最快的方式完成?
感谢您提供的任何可能的帮助。

我不确定您是否关心标题和描述中的文字,因此这两个部分都有,但可以轻松修改

如果你想追踪独特的东西,集合通常是一种很好的类型,因为它不允许你添加多个相同的元素

此代码将在所有标题和描述中建立一组独特的单词。我添加了忽略列表,以防您希望忽略某些特殊单词。如果需要,可以使用正则表达式使其更加复杂

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)