【问题标题】:Convert list of strings to numpy array of floats将字符串列表转换为 numpy 浮点数组
【发布时间】:2019-10-31 16:20:02
【问题描述】:

假设我有一个字符串列表,我想将其转换为 numpy 数组。例如我有

A=A=['[1 2 3 4 5 6 7]','[8 9 10 11 12 13 14]']
print(A)
['[1 2 3 4 5 6 7]', '[8 9 10 11 12 13 14]']

我希望我的输出如下所示:2 x 7 的矩阵

[1 2 3 4 5 6 7;8 9 10 11 12 13 14]

到目前为止我尝试过的如下:

m=len(A)
M=[]
for ii in range(m):
    temp=A[ii]
    temp=temp.strip('[')
    temp=temp.strip(']')
    M.append(temp)
print(np.asarray(M))

但是我的输出如下:

['1 2 3 4 5 6 7' '8 9 10 11 12 13 14']

谁能帮我正确删除左右括号并将结果转换为浮点矩阵。

【问题讨论】:

标签: arrays string list numpy casting


【解决方案1】:

直接走。删除括号,拆分空格并转换为浮点数,然后将结果发送到 numpy.array:

np.array([[float(i) for i in j[1:-1].split()] for j in A])

测试代码:

import numpy as np
A = ['[1 2 3 4 5 6 7]','[8 9 10 11 12 13 14]']
print(np.array([[float(i) for i in j[1:-1].split()] for j in A]))

结果:

[[  1.   2.   3.   4.   5.   6.   7.]
 [  8.   9.  10.  11.  12.  13.  14.]]

【讨论】:

  • 你能解释一下你的代码是做什么的吗?你的代码的解包版本是什么?
  • 我确实解释过了。删除括号,拆分空格并转换为浮点数。除此之外,去学习list comprehensions
  • @user59419,我认为将列表理解转换为循环(实际上是两个循环)是一个很好的 Python 练习。在您开始使用的追加循环和列表推导之间有一个直接的映射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2021-12-28
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
相关资源
最近更新 更多