\

Pythonでは、リストから上位k個の要素のインデックスを取得する方法がいくつかあります。以下にその方法をいくつか紹介します。

方法1: sortedrangeを使用する

Pythonの組み込み関数sortedrangeを使用して、リストの上位k個の要素のインデックスを取得することができます。

a = [5,3,1,4,10]
k = 2
indices = sorted(range(len(a)), key=lambda i: a[i])[-k:]

このコードでは、range(len(a))でインデックスのリストを作成し、key=lambda i: a[i]でソートの基準をリストaの要素に設定しています。そして、[-k:]で上位k個のインデックスを取得しています。

方法2: numpy.argsortを使用する

numpyライブラリのargsort関数を使用すると、リストの上位k個の要素のインデックスを効率的に取得することができます。

import numpy as np

a = [5,3,1,4,10]
k = 2
indices = np.argsort(a)[-k:]

numpy.argsortは、配列をソートしたときのインデックスを返します。そのため、[-k:]で上位k個のインデックスを取得することができます。

方法3: heapq.nlargestを使用する

heapqモジュールのnlargest関数を使用すると、リストの上位k個の要素のインデックスを効率的に取得することができます。

import heapq

a = [2, 5, 3, 7, 1, 8, 4]
k = 3
indices = heapq.nlargest(k, range(len(a)), a.__getitem__)

heapq.nlargestは、第一引数に取得したい要素の数、第二引数に対象のリスト、第三引数にキーとなる関数を指定します。この例では、a.__getitem__をキーとして指定しています。

これらの方法を使って、Pythonのリストから上位k個の要素のインデックスを効率的に取得することができます。適切な方法を選択して、コードを最適化しましょう。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です