选择所有相邻元素而不复制numpy数组

时间:2014-11-11 07:33:39

标签: python arrays numpy

我有一堆格式为point = [time, latitude, longitude]的点。

所以,我有一个看起来像 -

的numpy数组
points = numpy.array([
    [t_0, lat_0, lon_0],
    [t_1, lat_1, lon_1],
    [t_2, lat_2, lon_2],
    ...
    [t_n, lat_n, lon_n],
])

现在,我需要做一些能够为我提供以下各点的内容,例如:

next_points = numpy.array([
    [t_1, lat_1, lon_1],
    [t_2, lat_2, lon_2],
    ...
    [t_n, lat_n, lon_n],
    [nan,   nan,   nan],   # Note how `nan` is put where next does not exist
])

prev_points = numpy.array([
    [nan,   nan,   nan],
    [t_0, lat_0, lon_0],
    [t_1, lat_1, lon_1],
    [t_2, lat_2, lon_2],
    ...
])

所以,我可以应用我的距离函数 -

next_distances = distance_function(points, next_points)
prev_distances = distance_function(points, prev_points)

现在,此任务出现在一个函数中,该函数在一个循环中被调用大约1000次,

如果我在不创建next_points副本的情况下获得prev_pointspoints,那就太好了。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这只是转移数组:

如果你nan - 填充两边的points数组,你可以

next_points = points[1:]
prev_points = points[:-1]

d_next = distance_function(next_points, points[:-1])
d_prev = distance_function(points[1:], prev_points)

虽然这是真正的距离函数,但您只需要执行d_nextd_prev并相应地再次移动。