将带有选项卡式数字的列表转换为数字数组或矩阵

时间:2018-11-20 12:51:10

标签: python arrays list numpy split

我有一个列表,其中每个元素代表一串消息信息:

rawdata = 
['1 1474585  1    19                                3', 
 '2 1474585  1    19                                2', 
 '3 1474585  1    27                                2', 
 '4 1474585  1    27                                2']

信息描述如下:[CAN MessageID DLC数据时间]
为了访问和分析信息,我试图拆分列表并将其转换为数字数组。我尝试使用split:

longstring = str.split(str(rawdata))

但这只是将列表分为一个长字符串:

longstring=
["['1", '1474585', '1', '19', "3',", "'
    2",  '1474585', '1', '19', "2',", "'
    3", '1474585', '1', '27', "2',
  "'4", '1474585', '1', '27', "2',",]"]

我要实现的目标是通过编写以下代码来调用所有messageID的选项:

mydreamarray[:][0] = [1,2,3,4]
mydreamarray[:][1] = [1474585,1474585,1474585,1474585]
mydreamarray[:][2] = [1,1,1,1]
mydreamarray[:][3] = [19,19,27,27]
mydreamarray[:][-1] = [3,2,2,2]

请帮助

3 个答案:

答案 0 :(得分:2)

ziplist-comprehension一起使用。 zip(*[..])将转置数据。

l = list(zip(*[map(int,i.split()) for i in rawdata]))
print (l)

输出:

[(1, 2, 3, 4),
 (1474585, 1474585, 1474585, 1474585),
 (1, 1, 1, 1),
 (19, 19, 27, 27),
 (3, 2, 2, 2)]

l[1]
#(1474585, 1474585, 1474585, 1474585)

答案 1 :(得分:0)

您可以创建一个numpy.array

import numpy as np
newarray = np.array([[int(i) for i in j.split()] for j in rawdata])

那么例如

>>> newarray
array([[      1, 1474585,       1,      19,       3],
       [      2, 1474585,       1,      19,       2],
       [      3, 1474585,       1,      27,       2],
       [      4, 1474585,       1,      27,       2]])
>>> newarray[:,0]
array([1, 2, 3, 4])
>>> newarray[:,1]
array([1474585, 1474585, 1474585, 1474585])

答案 2 :(得分:0)

您真的应该自己解决类似的问题。那就是你学习的方式。一分耕耘一分收获。要求别人为你做你的工作不会教你什么。

这可能会帮助

如何设置空白的mydreamarray? Python数组从零开始,因此不能有元素-1。但是,您可以使用字典。字典可以具有任何整数或字符串作为键。因此,

mydreamdict={}
mydreamdict[-1] = []  # etc

还是最好放弃使用-1而改为使用4?

要附加到列表,请使用其.append()方法

rawdata是原始行的列表,您想要对它们进行处理,将数据字段附加到mydreamdict中的空列表中。所以

for row in rawdata:
    fields = split( row )
    mydreamdict[0].append( ... something out of fields  )
    #... more code needed

fields是字符串列表。您想在存储之前将字符串转换为整数。内置的int()函数可以做到这一点。

相关问题