首页 > 解决方案 > 我想找到一个二维列表之间的距离,然后将它添加到一个元素

问题描述

我的数据如下:

mx_ranges1 = [ 
  (848,888),
  (806,848),
  (764,806),
  (722,764),
  (680,722),
  (638,680),
  (596,638),
  (554,596),
  (512,554),
  (470,512),
  (428,470),
  (386,428),
  (344,386),
  (302,344),
  (260,302),
  (218,260),
  (176,218),
  (134,176),
]

a=((mx_ranges1[0][1]-mx_ranges1[0][0])/2)+(mx_ranges1[0][0])
b=((mx_ranges1[1][1]-mx_ranges1[1][0])/2)+(mx_ranges1[1][0])
c=((mx_ranges1[2][1]-mx_ranges1[2][0])/2)+(mx_ranges1[3][0])

print(a)
print(b)
print(c)`

这种方式不是很有效,我知道它可以以某种方式表示在一个for循环中,我只是不知道我该怎么做。请给我一些参考,因为我是 python 和一般编程的新手。然后我有另一个带有 y 的列表,它也需要获取距离然后将其添加到第一个元素。

不确定它是否可以直接放入单个 2D 数组中,但只做第一部分对我来说就足够了。我可以手动完成其余的工作。

标签: python

解决方案


您可以使用简单的列表理解

[(j-i)/2 + i for i,j in mx_ranges1]
# [868.0, 827.0, 785.0, 743.0, 701.0, 659.0, 617.0 ...

这等效于以下 for 循环:

res = []
for i,j in mx_ranges1:    
    res.append((j-i)/2 + i)

您还提到使用 numpy 数组。请注意,这将是最有效和最简单的方法,因为这是基本切片和索引的问题:

a = np.array(mx_ranges1)
(a[:,1] - a[:,0]) /2 + a[:,0]
# array([868., 827., 785., 743., ...

推荐阅读