我有一个列表,其中每个元素代表一串消息信息:
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]
请帮助
答案 0 :(得分:2)
将zip
与list-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()
函数可以做到这一点。