我根据计算有一个向量数组(或者为简单起见,可以假设我有一个数组),我制作了2个不同的数组,它们的第一个数组的大小相同,其中第一个数组包含0到1之间的数字(对于第一个数组的每个索引,第二个和包含汉明距离的第三个数组)现在我想根据第二个和第三个数组同时对第一个数组进行排序。由于第二和第三数组包含的值介于0和1之间,因此我想对第一数组进行排序,以便每个元素具有第二和第三数组最接近值0.5的距离。
如果我想举一些现实的例子:
first = numpy.array([1,2,3])
second = numpy.array([0.2, 0.5, 0.97])
third = numpy.array([0.3, 0.45, .98])
first = sort(first, second, third)
之后,首先必须是这样的:[2,1,3]
为什么我应该拥有这个?因为second [1]和third [1]是最接近(0.5,0.5)的点(闭合,我的意思是类似欧几里得距离或其他任何东西),并且在索引号2索引号0之后有第二个到点的闭合距离(0.5,0.5)。
或者,如果我有second = numpy.array([0.62, 0.61, 0.97])
并且third = numpy.array([0.49, 0.72, 0.97])
想要排序数组返回类似[0,1,2]的索引,那么排序后的第一个数组[1,2,3]
为什么会这样?因为second [0]和third [0]是最接近点(0.5,0.5)的点,依此类推。
import numpy as np
first = np.array([1,2,3])
second = np.array([0.2, 0.5, 0.97])
third = np.array([0.3, 0.45, .98])
sqdist = (second-0.5)**2 + (third-0.5)**2
idx = np.argsort(sqdist)
first = first[idx]
print(first)
产量
[2 1 3]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句