【问题标题】:Python - convert a list in an arrayPython - 转换数组中的列表
【发布时间】:2015-09-15 15:05:08
【问题描述】:

我得到了一个值列表,我想将它转换为一个数组以便轻松提取列,但我对“不允许使用”感到尴尬:“x = np.array(a, dtype=float )"

['"442116.503118","442116.251106"',
     '"442141.502863","442141.247462"',
    ...

得到的消息是: "无法将字符串转换为浮点数:"442116.503118","442116.251106""

【问题讨论】:

  • 你有一个字符串列表,你需要先将它们转换为浮点数,然后再构造一个浮点数数组
  • 您有 2 个级别的引用:'"...","..."'np.array() 只能处理一层。

标签: python arrays list numpy


【解决方案1】:

根据给出的非常有限的信息进行回答,但如果这是您的列表,它看起来像嵌套字符串列表,而不是浮点数。试试

x = np.array([float(i.replace("\"","")) for i in a], dtype=float)"

【讨论】:

  • 但它是一个嵌套字符串的列表,第一个字符串是两个双引号数字都用单引号'"442116.503118","442116.251106"'
  • 我得到的不起作用:“无法将字符串转换为浮点数:“442116.503118”,“442116.251106”“
  • 好的,请仔细阅读错误并弄清楚发生了什么,天哪。我已经编辑了我的答案。
【解决方案2】:

这是错误的......不过这对我有用:

import numpy as np

wtf = ['"442116.503118","442116.251106"',
     '"442141.502863","442141.247462"']

to_list = []

for nest1 in wtf:
    nest2 = nest1.split(',')
    for each in nest2:
        to_list.append(float(each.strip('"')))

to_array = np.asarray(to_list)

不完全优雅。您需要处理输入数据中的每一层嵌套。我建议您重新考虑格式化输入数据的方式。

【讨论】:

  • 感谢您的帮助;)它有效!但是您必须将“每个”更改为“val”
  • 抱歉有错误,每列的值都是一样的
  • 对不起,一定是抄错了代码。我已经编辑了我的答案,现在应该是正确的。我不明白你说的列是什么意思?是不是 442116.503118 和 42141.502863 应该在 1 列中而其余的值在另一列中?如果是这样,您可以通过to_array.reshape(-1,2) 以这种方式获取它们。希望这会有所帮助。
猜你喜欢
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 1970-01-01
  • 2021-09-15
  • 2021-03-22
  • 2012-06-13
相关资源
最近更新 更多