我正在尝试锻炼数组中两个连续项的内部值之间的距离。
例如:
>>> _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)]
有关如何解决这个问题的任何建议?感谢。
答案 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:]