我有一堆格式为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_points
和points
,那就太好了。
有办法做到这一点吗?
答案 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_next
或d_prev
并相应地再次移动。