[英]Sort array in Python (numpy) by two other lists
我有一个向量数组(或者为简单起见,你可以假设我有一个数组)基于一些计算我制作了 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]
为什么我应该有这个? 因为第二个 [1] 和第三个 [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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.