【问题标题】:Convert python string into numpy array [duplicate]将python字符串转换为numpy数组[重复]
【发布时间】:2018-05-07 08:58:00
【问题描述】:

我希望有人可以帮助我将 python 字符串转换为 numpy 数组。本质上,假设我有一个这样的 Python 字符串:

'[ 0.11591 0.044932 0.66926 -0.67844 0.47253 -0.84737\n 1.0734 -0.075396 -0.22688 0.84021 -0.46608 0.019941\n -0.0020394 -0.13038 0.8911 -0.40015 0.52048 0.69283\n -0.10257 0.54296 -0.416 0.36585 0.96078 0.50816\n 0.50144 0.66489 -0.79224 0.44567 0.90822 -0.67522\n 0.047322 0.48399 -0.53316 0.76157 -0.86072 0.091377\n 0.30159 -1.194 0.8679 -0.58691 0.48712 -0.66167\n -0.24265 -0.18849 -0.19353 0.0014832 0.88768 0.36672\n 0.16211 0.56235 ]'

我想在 Python 中将其转换为 1x50 维数组。有什么有效的方法吗?提前致谢。

编辑:我如何得到那个字符串?它最初是一个 numpy 数组,作为字典中的值。然后我将其保存到数据类型为TEXT 的数据库中。之后,我从数据库中加载包含 numpy 数组的文本。

【问题讨论】:

  • 你能分享一下你是如何得到那个字符串的吗?您可以肯定地对其进行按摩以使其进入 numpy ,但这只会是一个杂物,我怀疑有更好的方法取决于它的创建方式/您如何检索它。
  • 只需更新我检索字符串的方式及其创建方式即可。

标签: python arrays python-3.x numpy


【解决方案1】:

假设你有这样一个字符串:

line = '[ 0.11591    0.044932   0.66926   -0.67844    0.47253   -0.84737\n  1.0734    -0.075396  -0.22688    0.84021   -0.46608    0.019941\n -0.0020394 -0.13038    0.8911    -0.40015    0.52048    0.69283\n -0.10257    0.54296   -0.416      0.36585    0.96078    0.50816\n  0.50144    0.66489   -0.79224    0.44567    0.90822   -0.67522\n  0.047322   0.48399   -0.53316    0.76157   -0.86072    0.091377\n  0.30159   -1.194      0.8679    -0.58691    0.48712   -0.66167\n -0.24265   -0.18849   -0.19353    0.0014832  0.88768    0.36672\n  0.16211    0.56235  ]'

只需从中删除第一个和最后一个元素,将其拆分并将元素转换为数字:

map(float, line[1:-2].split())

或者只使用numpy.fromstring函数:

numpy.fromstring(line[1:-2], dtype=float, sep=' ')

【讨论】:

    【解决方案2】:

    这是解决它的一种方法:

    import numpy as np
    import re
    
    txt = '[ 0.11591    0.044932   0.66926   -0.67844    0.47253   -0.84737\n  1.0734    -0.075396  -0.22688    0.84021   -0.46608    0.019941\n -0.0020394 -0.13038    0.8911    -0.40015    0.52048    0.69283\n -0.10257    0.54296   -0.416      0.36585    0.96078    0.50816\n  0.50144    0.66489   -0.79224    0.44567    0.90822   -0.67522\n  0.047322   0.48399   -0.53316    0.76157   -0.86072    0.091377\n  0.30159   -1.194      0.8679    -0.58691    0.48712   -0.66167\n -0.24265   -0.18849   -0.19353    0.0014832  0.88768    0.36672\n  0.16211    0.56235  ]'
    
    txt = re.sub(r'\n','', txt)
    myList = txt.split()[1:-1]
    myList2 = list(map(float,myList))
    n_arr = np.array(myList)
    print(n_arr)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2013-05-05
      • 2016-03-10
      • 2021-04-26
      • 2015-03-28
      • 2021-12-28
      相关资源
      最近更新 更多