如何找到一个列表中的最大值和另一个列表中对应的值?

问题描述 投票:0回答:1

我有两个元素数量相同的列表。每个元素都是一个数字(浮点数)。我需要在第一个列表中找到 10 个最大值,然后在第二个列表中找到那些与第一个列表中的 10 个最大值的索引具有相同索引的值。我怎样才能做到这一点? (如果可能的话,我想使用 numpy)。 例如:

a= [0.5, 2.9, 9.7]
b= [1, 3, 5.8]

我需要列表 a 中的 2 个最大值,即 2.9 和 9.7。它们的索引是 1 和 2,所以我需要列表 b 中的 3 和 5.8。

我还没试过,想过amax什么的,但是不知道

python list numpy indices
1个回答
-1
投票

假设这个例子(为了清楚起见,这里使用整数,但这与浮点数相同)

a1 = np.array([11,  6, 13,  8,  9,  5,  7, 10,  3, 14, 12,  4,  2,  1,  0])
# top 10:       x   x   x   x   x   x   x   x       x   x
a2 = np.array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

您可以使用

numpy.argpartition
找到前 10 个值,然后索引您的第二个数组:

out = a2[np.argpartition(a1, -10)[-10:]]
# array([ 5,  1,  6,  3,  4,  7, 10,  9,  2,  0])

如果你想要它们的顺序:

out = a2[np.sort(np.argpartition(a1, -10)[-10:])]
# array([ 0,  1,  2,  3,  4,  5,  6,  7,  9, 10])
© www.soinside.com 2019 - 2024. All rights reserved.