优化在二维数组中查找最近点的索引。
优化在二维数组中查找最近点的索引。
2D NumPy数组x_array
包含x方向的位置信息,y_array
包含y方向的位置信息。然后我有一个x,y点的列表。对于列表中的每个点,我根据这段代码找到最接近该点的位置的数组索引:
import time import numpy def find_index_of_nearest_xy(y_array, x_array, y_point, x_point): distance = (y_array-y_point)**2 + (x_array-x_point)**2 idy,idx = numpy.where(distance==distance.min()) return idy[0],idx[0] def do_all(y_array, x_array, points): store = [] for i in xrange(points.shape[1]): store.append(find_index_of_nearest_xy(y_array,x_array,points[0,i],points[1,i])) return store # 创建一些虚拟数据 y_array = numpy.random.random(10000).reshape(100,100) x_array = numpy.random.random(10000).reshape(100,100) points = numpy.random.random(10000).reshape(2,5000) # 计算运行时间 start = time.time() results = do_all(y_array, x_array, points) end = time.time() print '完成时间:',end-start
我想加快它的速度。