如何将字符串列表转换为二维数组
字符串是
['43.417', '42.953', '43.417', '43.290', '43.105', '43.000', '43.105', '43.290', '42.426', '42.953',
'42.837', '42.720']
-> [43.417, 42.953],
[42.417, 43.105],
[43.105, 43.000],
,,,,
[42.837, 42.720]
答案 0 :(得分:0)
那么您想将每2个元素分组到一个列表中并将它们全部收集到一个大列表中吗?
如果列表中的元素数为偶数:
newList = [oldList[k * 2 : (k + 1) * 2] for k in range(len(oldList) // 2)]
[1, 2, 3, 4] -> [[1, 2], [3, 4]]
如果元素数为奇数,并且您希望在末尾包含1个元素的列表:
import math
newList = [oldList[k * 2 : (k + 1) * 2] for k in range(math.ceil(len(oldList) / 2))]
[1, 2, 3] -> [[1, 2], [3]]
如果您不想包括该1元素列表,请使用第一种情况。
答案 1 :(得分:0)
如果您有字符串列表,我们可以复制n-粘贴并创建一个数组:
In [149]: alist = ['43.417', '42.953', '43.417', '43.290', '43.105', '43.000', '43.105', '43.290', '4
...: 2.426', '42.953','42.837', '42.720']
In [150]: len(alist)
Out[150]: 12
In [151]: np.array(alist, dtype=float)
Out[151]:
array([43.417, 42.953, 43.417, 43.29 , 43.105, 43. , 43.105, 43.29 ,
42.426, 42.953, 42.837, 42.72 ])
通过指定dtype,array
将字符串转换为数字。如果一个或多个无效,则会产生错误。
有了数组后,很容易重塑形状
In [152]: np.array(alist, dtype=float).reshape(6,2)
Out[152]:
array([[43.417, 42.953],
[43.417, 43.29 ],
[43.105, 43. ],
[43.105, 43.29 ],
[42.426, 42.953],
[42.837, 42.72 ]])
答案 2 :(得分:0)
另一个选择是使用范围和切片(无需导入任何模块):
>>> list_ = ['a', 'b', 'c', 'd', 'e']
>>> [list_[i:i+2] for i in range(0, len(list_), 2)]
[['a', 'b'], ['c', 'd'], ['e']]