Skip to main content
 首页 » 编程设计

python之numpy 数组列表到坐标点列表的转换

2025年05月04日21落叶

我有一个坐标数组如下:

[array([[  72.57218373,  247.1759997 ]]), array([[ 262.51505688,  158.68137977]]), array([[ 244.53157113,  100.05665591]]), array([[ 245.30108919,   88.97536043]]), array([[ 43.60839312,  82.11394031]]), array([[ 260.62555476,  161.252084  ]]), array([[ 234.46830867,  269.07508699]]), array([[ 284.51718016,  142.55126301]]), array([[ 195.30252058,   84.7559498 ]]), array([[ 141.08621668,  276.6625877 ]]), array([[ 294.18468717,  131.91470926]]), array([[ 35.46840935,  51.14890688]]), array([[  36.15758189,  131.19703618]]), array([[ 175.95018737,  216.52553084]]), array([[  62.99149427,  217.7800738 ]]), array([[ 245.81708339,   10.06949286]]), array([[ 137.31450413,  145.10778886]]), array([[ 197.76975618,   75.96150192]]), array([[  17.87096457,  120.88350573]]), array([[ 262.89229921,  287.40287273]]), array([[ 177.51716203,  101.5694418 ]]), array([[  97.76530613,  190.06919232]]), array([[ 229.31904186,   97.92874288]])] 

我想把它转换成点,这样我的最终列表应该是这样的形式

[(72.57218373,  247.1759997), (262.51505688,  158.68137977), ( 244.53157113,  100.05665591), (245.30108919,   88.97536043), (43.60839312,  82.11394031), (260.62555476,  161.252084), ...] 

有人可以帮我用 Python 实现吗?

谢谢,

请您参考如下方法:

使用:

new_list = [tuple(arr[0]) for arr in old_list] 

因为列表中的每个元素都是一个只有一行的二维数组。

请注意,您的 tuple 对象现在将包含标量 numpy 对象,可能是 numpy.float64。这可能并不理想,在这种情况下,您可以:

new_list = [tuple(map(float, arr[0])) for arr in old_list]