【问题标题】:Stripping whitespaces in a numpy array去除 numpy 数组中的空格
【发布时间】:2018-03-21 06:29:11
【问题描述】:

我环顾四周,找不到一种简单/单行的方法来去除 numpy 数组中的空格::

print(type(p))
print(p)

<class 'numpy.ndarray'>
[{' SPL', 'GPU', 'bcc'} {'ANZ ', 'ROI'} {'ANZ', 'bcc'}
 {'GPU', '  ANZ   ', 'bcc'} {'bcc ', ' SPL'}]

到::

[{'SPL', 'GPU', 'bcc'} {'ANZ', 'ROI'} {'ANZ', 'bcc'}
 {'GPU', 'ANZ', 'bcc'} {'bcc', 'SPL'}]

尝试

np.char.strip(p)

结果

TypeError: string operation on non-string array

那么,这是变相的列表吗?

一点帮助??!

【问题讨论】:

  • 这真的不是 numpy 的典型用例,我认为使用它没有任何优势。那是什么?一组字符串的数组?

标签: python string numpy whitespace


【解决方案1】:

你有一个集合数组,所以迭代它们。使用剥离的元素创建一个新集合,并创建一个新数组:

p = np.array([{item.strip() for item in s} for s in p])

这使用集合推导来创建带有剥离元素的新集合。原始数组在列表解析中进行迭代,然后将其输入np.array() 以创建一个新数组。

【讨论】:

    【解决方案2】:

    这可能是由于您创建 numpy 数组的方式。

    以下代码可以正常工作:

    import numpy as np
    
    p = np.array([[" asdf ", " asdf " ], [" afhffh hfhf ", " a "]])
    print(type(p))
    print(p)
    
    p = np.char.strip(p)
    print(p)
    

    然后输出:

    <class 'numpy.ndarray'>
    [[' asdf ' ' asdf ']
     [' afhffh hfhf ' ' a ']]
    [['asdf' 'asdf']
     ['afhffh hfhf' 'a']]
    

    【讨论】:

    • 我没有投反对票。但只是一些评论:有时我们需要接受用户决定以某种特定格式存储数据。通常用户是错误的并且一些替代存储更好(他不知道),但是这些情况通常通过 cmets/问题/讨论解决而不添加答案。假设我们可以完全改变他的数据(sets -> array 是一个巨大的差异)在一般情况下可能是非常错误的。
    • 我没有投反对票,也不会这样做。但是,在没有正当动机或理由的情况下提供不同的代码,这非常令人沮丧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多