どうも、ちょげ(@chogetarou)です。
配列(array)のN番目の最小値を取得する方法を紹介します。
リストの場合
リスト(List)で2番目に小さい値を取得するには、sorted()を使います。
まず、対象のリストをSetに変換します。
sorted()を呼び出し、引数にSetを指定します。
そして、sorted()の結果のインデックス「N – 1」にアクセスします。
#ls=対象のリスト
new_ls = set(ls)
result = sorted(new_ls)[N - 1] #N番目に小さい値を取得
上記のsorted()のインデックス「N – 1」にアクセスすることで、リストのN番目に小さい値を取得できます。
使用例
nums = [10, 3, 5, 8, 1, 7, 2, 9]
#3番目に小さい値を取得
n = 3
new_ls = set(nums)
result = sorted(new_ls)[n - 1]
print(result)
出力:
3
Numpy配列の場合
Numpy配列(array)で2番目に大きい値を取得するには、partition()を使います。
まず、numpyからpartition()を呼び出します。
partition()の第1引数にnumpyから呼び出したunique()、第2引数に「N – 1」を指定します。
unique()の引数に、Numpy配列から呼び出したflatten()の結果を指定します。
そして、partition()の結果のインデックス「N – 1」にアクセスします。
#arr=対象のNumpy配列
result = np.partition(np.unique(arr.flatten(), N - 1)[N - 1] #N番目に小さい値を取得
上記のpartition()のインデックス「N – 1」にアクセスすることで、Numpy配列のN番目に小さい値を取得できます。
使用例
import numpy as np
nums = np.array([[10, 3, 1, 5, 8], [1, 7, 1, 2, 9]])
n = 3
result = np.partition(np.unique(nums.flatten()), n - 1)[n - 1]
print(result)
出力:
3
まとめ
リスト(List)のN番目に小さい値を取得する方法は、sorted()を使います。
#ls=対象のリスト
new_ls = set(ls)
result = sorted(new_ls)[N - 1] #N番目に小さい値を取得
Numpy配列のN番目に小さい値を取得するには、partition()を使います。
#arr=対象のNumpy配列
result = np.partition(np.unique(arr.flatten(), N - 1)[N - 1] #N番目に小さい値を取得
コメント