繁体   English   中英

将数字隔开的字符串转换为数组

[英]Convert string with spaced out numbers into array

我正在使用Python工作,目前有一个看起来像这样的列表

['001   2.4600       0.46  2.36E+003   86.66  16.77       0.33  1.32E+003   74.41  17.61       0.40  2.21E+003   87.39  22.07',
 '002   10.310       0.38  2.95E+002   76.88   4.53       0000  000000000   00000   0000       0.34  2.62E+002   97.36   4.41',
 '003   74.840       0.63  5.07E+002   64.63   4.03       0.57  4.15E+002   61.96   3.99       0.63  5.43E+002   64.67   5.16',
...

等等,还有很多其他元素。 列表的每个元素都是一个字符串,其中包含各种数字,它们之间有空格。 即,如上所述,第一个元素具有001、2.4600、0.46,依此类推。

关键是我想将列表中的每个元素转换为数组的一行。 目的是要有一个大数组,为我提供所有信息,这些信息目前只是列表中字符串内用空格分隔的数字。

我确定我可以使用内置的数组模块来执行此操作,但我只是不知道如何操作。

有任何想法吗? 希望问题清楚。

假设您要在列表的最终列表中浮动,请尝试以下操作:

>>> data = ['001 2.4600 0.46 2.36E+003 86.66 16.77 0.33 1.32E+003 74.41 17.61 0.40 2.21E+003 87.39 22.07', '002 10.310 0.38 2.95E+002 76.88 4.53 0000 000000000 00000 0000 0.34 2.62E+002 97.36 4.41', '003 74.840 0.63 5.07E+002 64.63 4.03 0.57 4.15E+002 61.96 3.99 0.63 5.43E+002 64.67 5.16']

>>> [list(map(float, row.split())) for row in data]
[[1.0, 2.46, 0.46, 2360.0, 86.66, 16.77, 0.33, 1320.0, 74.41, 17.61, 0.4, 2210.0, 87.39, 22.07], [2.0, 10.31, 0.38, 295.0, 76.88, 4.53, 0.0, 0.0, 0.0, 0.0, 0.34, 262.0, 97.36, 4.41], [3.0, 74.84, 0.63, 507.0, 64.63, 4.03, 0.57, 415.0, 61.96, 3.99, 0.63, 543.0, 64.67, 5.16]]

map只是说“在此列表中的所有内容上执行此函数( float() )( split()的结果,这是字符串列表)”。 在Python 3中,它返回一个迭代器,因此我们必须要求它的list() 通常最好使用for循环或列表理解而不是map,但是在这种情况下很方便。

您使用array模块的想法可能是虚假的,因为array.array对象本质上是一个受约束的数据类型的list 您不能对它们使用矢量化操作。 此外, array.array是一维对象。

也就是说,您可能要使用numpy模块 ,该模块array对象是一个多维数组,您可以随意对其进行操作。

# idiomatic manner of importing numpy
import numpy as np

data = ['1 2 3.', '4. 5 8']
arraydata = np.array([[float(n) for n in row.split()] for row in data])
print arraydata

# [[ 1.  2.  3.]
#  [ 4.  5.  8.]]

希望我理解正确

res = []
for row in my_list:
    res.append(list(map(float, row.split())))

在这里,您将拥有一个字符串格式的值矩阵。 增加了转化

假设您的数据存储在名为data的列表中,则可以使用data =[[int(el) for el in string.split(' ')] for string in data]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM