【问题标题】:Split string to numpy array [duplicate]将字符串拆分为numpy数组[重复]
【发布时间】:2021-05-18 06:20:51
【问题描述】:

我正在尝试拆分此元素:

'(353.0206847485174, 351.209306627799, 357.05459767397815, 351.53131418867196, 350.8487161820783, 356.76859139989006)'

到一个 numpy 数组。我尝试了以下方法:

'(353.0206847485174, 351.209306627799, 357.05459767397815, 351.53131418867196, 350.8487161820783, 356.76859139989006)'.split(', ')

但是我有以下内容:

['(353.0206847485174',
 '351.209306627799',
 '357.05459767397815',
 '351.53131418867196',
 '350.8487161820783',
 '356.76859139989006)']

所以第一个和最后一个元素仍然有列,知道如何解决这个问题吗?谢谢

【问题讨论】:

  • 你有没有试过在分割之前从字符串中切掉'()'?

标签: python numpy


【解决方案1】:

我假设您确实想要一个数字数组,而不是字符串数组。

>>>import ast
>>>import numpy as np
>>>s = '(353.0206847485174, 351.209306627799, 357.05459767397815, 351.53131418867196, 350.8487161820783, 356.76859139989006)'
>>> np.array(ast.literal_eval(s))
array([353.02068475, 351.20930663, 357.05459767, 351.53131419,
       350.84871618, 356.7685914 ])
>>>

【讨论】:

    【解决方案2】:

    你可以在没有任何额外依赖的情况下做到这一点

    s = '(353.0206847485174, 351.209306627799, 357.05459767397815, 351.53131418867196, 350.8487161820783, 356.76859139989006)'
    nums = s.strip('(').strip(')').split(',')
    numbers = [float(n.strip()) for n in nums]
    

    这会将值作为列表提供,如果您希望将其作为 numpy 数组,请将最后一行替换为

    import numpy as np
    numbers = np.array([float(n.strip()) for n in nums])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 2011-12-20
      • 1970-01-01
      • 2013-01-03
      • 2016-01-15
      • 2021-10-09
      • 1970-01-01
      • 2015-08-28
      相关资源
      最近更新 更多