Python:如何将元组列表转换为NumPy数组

4

我有一些元组(x,y坐标)的列表,已经被转化成字符串并写入了文件中。当我从文件中读取这行数据时,我的列表如下:

[(341, 115), (174, 227), (457, 308)]

我怎样把这种类型的列表转换为numpy数组?最终结果应该像这样:
[[341 115]
 [174 227]
 [457 308]]

np.array("[(341, 115), (174, 227), (457, 308)]") - Rakesh
1
np.array(literal_eval("[(341, 115), (174, 227), (457, 308)]")) 将字符串转化为元组列表,再利用numpy将其转化为数组。 - Enayat
2个回答

3

使用 numpy

lst = [(341, 115), (174, 227), (457, 308)]

import numpy as np
print(np.array(lst))

输出:

[[341 115]
 [174 227]
 [457 308]]

使用列表推导式

print([list(lst) for lst in lst])

输出:

[[341, 115], [174, 227], [457, 308]]

编辑:

如果它是一个字符串,但在问题中贴出的代码看起来不像:

lst = "[(341, 115), (174, 227), (457, 308)]"

然后:

import numpy as np
from ast import literal_eval
print(np.array(literal_eval(lst)))

最终(适用于列表推导式):

print([list(lst) for lst in literal_eval(lst)])

1
"[int(x) for x in lst]"是多余的,因为lst中的所有元素已经是int类型。只需使用list(lst)即可。 - meowgoesthedog

1
使用`ast.literal_eval`将行(字符串)转换为实际的列表对象,并直接调用`numpy.array`:
line = "[(341, 115), (174, 227), (457, 308)]"

from ast import literal_eval
import numpy as np

np.array(literal_eval(line))

输出:

array([[341, 115],
   [174, 227],
   [457, 308]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接