【发布时间】:2018-07-31 17:26:46
【问题描述】:
我从 twitter 获得了一个非常大的数据集。我试图弄清楚如何在 numpy.环境是python解释器
>>tweets = [['buhari si good'], ['atiku is great'], ['buhari nfd sdfa atiku'],
['is nice man that buhari']]
>>>filter(lambda x: 'buhari' in x[0].lower(), tweets)
[['buhari si good'], ['buhari nfd sdfa atiku'], ['is nice man that buhari']]
我尝试了像下面这样的布尔索引,但数组变成了空
>>>tweet_arr = np.array([['buhari si good'], ['atiku is great'], ['buhari nfd sdfa atiku'], ['is nice man that buhari']])
>>>flat_tweets = tweet_arr[:, 0]
>>>flat_tweets
array(['buhari si good', 'atiku is great', 'buhari nfd sdfa atiku',
'is nice man that buhari'], dtype='|S23')
>>>flat_tweets['buhari' in flat_tweets]
array([], shape=(0, 4), dtype='|S23')
我想知道如何过滤 numpy 数组中的字符串,我很容易在这里过滤偶数
>>> arr = np.arange(15).reshape((15,1))
>>>arr
array([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12],
[13],
[14]])
>>>arr[:][arr % 2 == 0]
array([ 0, 2, 4, 6, 8, 10, 12, 14])
谢谢
【问题讨论】:
-
与第一个列表解决方案完全相同的方法适用于 NumPy 数组;这还不够吗?
-
@fuglede 我正在寻找 numpy 中最快的方法,因为我正在处理每天流式传输/更新的大型推文数据库。你会说我的第一个解决方案是最快的方法吗?
-
如果它实际上至少比我在下面建议的要快,我不会感到惊讶,但您可以在您的数据集上计时,看看什么有效(例如使用 IPython's %timeit magic)。跨度>
-
np.char具有将字符串方法应用于数组元素的函数,但它们并不比列表推导快多少。在大多数情况下,字符串 dtype 数组不提供比列表更快的处理。 -
@Adeyinka 如果您使用的是字符串,那么只使用普通 Python 可能会更快,因此列表理解方法将是理想的。
numpy不针对字符串进行优化,它针对快速 numerical 操作