【问题标题】:Splitting and collecting multi-word strings into numpy array将多词字符串拆分并收集到numpy数组中
【发布时间】:2020-09-03 02:54:05
【问题描述】:

我有一个字符串数组arr,我想用 (' ') 分割每个字符串,然后再收集成一个单词数组

import numpy as np
arr = np.array(['foo bar baz', 'foo baz bar' 'bar foo baz'], dtype=object)

输出应该类似于:

array(['foo', 'bar', 'baz', 'foo', 'baz', 'bar', 'bar', 'foo', 'baz'])

为什么下面的命令会报错,正确的方法是什么?

np.char.split(arr, sep = ' ')

TypeError: string operation on non-string array

【问题讨论】:

标签: python arrays string nlp


【解决方案1】:

试试这个

res = np.array(' '.join(arr).split())
print(res)

输出:

['foo', 'bar', 'baz', 'foo', 'baz', 'barbar', 'foo', 'baz']

【讨论】:

    【解决方案2】:

    代码不起作用的原因是您将 dtype 指定为 object 您应该将其更改为 str

    arr = np.array(['foo bar baz', 'foo baz bar', 'bar foo baz'], dtype=str)
    np.char.split(arr, sep = ' ')
    >>> array([list(['foo', 'bar', 'baz']), list(['foo', 'baz', 'bar']),
       list(['bar', 'foo', 'baz'])], dtype=object)
    

    如我们所见,输出为原始数组中的每个字符串提供了一个列表,您所要做的就是将它们连接起来

    np.concatenate(np.char.split(arr, sep=' '))
    >>> array(['foo', 'bar', 'baz', 'foo', 'baz', 'bar', 'bar', 'foo', 'baz'],
      dtype='<U3')
    

    【讨论】:

      猜你喜欢
      • 2011-10-23
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多