从2D坐标集合中提取子阵列?

时间:2016-08-08 13:51:19

标签: python arrays

在Python中,我有一个包含数据的大型2D数组,以及另一个包含感兴趣的M个二维坐标的集合的Mx2二维数组,例如。

coords=[[150, 123], [151, 123], [152, 124], [153, 125]]

我想在这些坐标(索引)位置提取包含数据数组值的Mx1数组。显然,data[coords]不起作用。

我怀疑有一种简单的方法可以做到这一点,但stackoverflow到现在为止我失败了。在此先感谢您的帮助。

编辑:一个例子是

data=[[0, 0, 0, 0, 0, 0, 1, 0],
      [0, 0, 0, 1, 2, 1, 0, 0],
      [0, 0, 0, 1, 23, 40, 0, 0],
      [0, 0, 0, 1, 1, 2, 0, 0],
      [0, 0, 3, 2, 0, 0, 0, 0],
      [0, 0, 4, 5, 6, 2, 1, 0],
      [0, 0, 0, 0, 1, 20, 0, 0],
      [0, 0, 0, 3, 1, 2, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0]]

coords=[[1,4],[2,4],[2,5],[5,3],[6,5]]

,所需的输出将是

out=[2,23,40,5,20]

1 个答案:

答案 0 :(得分:2)

您可以使用list comprehension

In [73]: [data[i][j] for i,j in coords]
Out[73]: [2, 23, 40, 5, 20]

列表推导返回的结果等同于

result = []
for i,j in coords:
    result.append(data[i][j])