【问题标题】:How can I make a string type into numpy array? [duplicate]如何将字符串类型转换为 numpy 数组? [复制]
【发布时间】:2019-08-12 08:53:53
【问题描述】:

这是一个字符串类型的 numpy 数组。

    '[[-0.44547156 -0.45989361 -0.54462862 -0.77093382 -0.42889501 -0.46236286\n  -0.58319129 -0.56385354 -0.58254861 -0.7476285 ]\n [-0.09561464  0.00522743  0.01977207 -0.71317843 -0.73268128  0.01925189\n  -0.04707032 -0.44227692 -0.06843101 -0.80253451]\n [-0.13276529 -0.22165378  0.08195758 -0.06191557 -0.22300162  0.09476953\n  -0.71540623  0.35323137 -0.26945605 -0.006015  ]\n [ 0.36005916  0.66788728  0.21763805  0.54523638  0.13773763 -0.04109221\n   0.33481649  0.02811258 -0.01340615  0.52465671]]'

如何将其转换回 numpy 数组,如

    array([[-0.44547156, -0.45989361, -0.54462862, -0.77093382, -0.42889501,
    -0.46236286, -0.58319129, -0.56385354, -0.58254861, -0.7476285 ],
   [-0.09561464,  0.00522743,  0.01977207, -0.71317843, -0.73268128,
     0.01925189, -0.04707032, -0.44227692, -0.06843101, -0.80253451],
   [-0.13276529, -0.22165378,  0.08195758, -0.06191557, -0.22300162,
     0.09476953, -0.71540623,  0.35323137, -0.26945605, -0.006015  ],
   [ 0.36005916,  0.66788728,  0.21763805,  0.54523638,  0.13773763,
    -0.04109221,  0.33481649,  0.02811258, -0.01340615,  0.52465671]])

【问题讨论】:

  • 经过大量编辑 - 在换行符处拆分、删除括号、在空格处拆分等。希望字符串不包含省略号。更好的是 - 不要将此格式用作保存和/或传输数组的一种方式。
  • @alexbclay。不错的发现
  • @MadPhysicist 我需要进行 numpy 操作并将其存储在数据库中。然后我需要从数据库中恢复 numpy 数组,并在接下来的操作中使用它。在这种情况下,您能推荐一些方法来转换字符串以外的numpy数组吗?
  • @S.joo。二进制格式会更紧凑,可以直接转成数组。

标签: python numpy


【解决方案1】:

您可以使用字符串替换将其重新格式化为正确的列表格式,然后使用 eval 将其转换为列表,然后使用 numpy 将其恢复为数组

str_val = str_val.replace('\n', '').replace('  ',' ').replace('  ', ' ').replace('[ ', '[').replace(' ]', ']').replace(' ', ', ')

back_to_array = np.array(eval(str_val))

【讨论】:

  • 这些替换似乎都没有必要,并且 eval 不是最好的方法
  • @MadPhysicist 你试过了吗?它们是使 eval 函数正常工作所必需的
  • 只需要插入逗号。 ast.literal_eval 通常更可取
  • 您也可以使用各种标签编码或一种热编码技术
  • 最佳答案是@MadPhysicist 将其标记为重复的答案。我在这个特定的字符串上尝试了这种方法,但它没有用,所以我想出了一些 hacky。 Eval 绝对不是使用的好习惯,所以我不会推荐我的答案用于任何其他情况。
猜你喜欢
  • 2020-06-04
  • 2020-03-12
  • 2013-05-05
  • 2015-08-17
  • 2016-03-10
  • 2015-10-23
  • 2021-04-26
  • 2015-03-28
相关资源
最近更新 更多