python - 我想找到一个二维列表之间的距离,然后将它添加到一个元素
问题描述
我的数据如下:
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 数组中,但只做第一部分对我来说就足够了。我可以手动完成其余的工作。
解决方案
您可以使用简单的列表理解:
[(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., ...
推荐阅读
- javascript - 请求不返回完整的响应。错误 JSON.parse
- sql - HiveQL:合并数组列
- wordpress - WooCommerce:从匹配属性中获取产品变体 ID
- opengl - 具有延迟渲染和环境光遮蔽的镜子
- android - React Native + WebView + android 模拟器,WebGL 支持
- sqlite - sqlite 复制 .db 文件不会复制文件的最后一个版本
- python - Python中的任何类型的范围解析运算符?
- c - 如何从睡眠模式唤醒 Pic32?
- ios - 在文本结束之前和之后放置操作按钮
- ios - Swift 4 GIDSignIn“未声明的类型”错误