如何计算数组的内部距离

时间:2014-03-19 04:25:06

标签: python arrays numpy

我正在尝试锻炼数组中两个连续项的内部值之间的距离。

例如:

>>> _array=[(5, 10), (15, 20), (25, 30), (35, 40)]
>>> np_array=[np.array(x) for x in _array]
>>> distance=[x - np_array[i - 1] for i, x in enumerate(np_array)][1:]
>>> distance
[array([10, 10]), array([10, 10]), array([10, 10])]

上面的示例计算项目之间的距离。我真正追求的是数组中任意两个连续项的内部属性之间的距离,即

(15-10),(25-20),(35-30)

所需的输出:[(5),(5),(5)]

有关如何解决这个问题的任何建议?感谢。

3 个答案:

答案 0 :(得分:2)

首先,因为在NumPy中使用非NumPy数据结构会使整个点失败:

_array = numpy.asarray(_array)

然后,只需切片并减去:

distances = array[1:, 0] - array[:-1, 1]

array[1:, 0]获取第一个坐标后的所有点的第一个坐标,array[:-1, 1]获取最后一个点之前的所有点的第二个坐标,并且元素方式应用减法。

答案 1 :(得分:1)

import numpy as np

a = np.array([(5, 10), (15, 20), (25, 30), (35, 40)])

a[1:, 0] - a[:-1, 1]

答案 2 :(得分:1)

只需访问当前元组的索引[0]和前一个元组的[1]

distance = [x[0] - np_array[i - 1][1] for i, x in enumerate(np_array)][1:]