【Python】最大値が複数ある配列からインデックスを全て取得する方法

この記事では、Pythonを使って配列から複数の最大値のインデックスを見つける方法を紹介します。

異なる方法を通じて、どのようにして最大値のインデックスを見つけるかを学びましょう。

目次から探す

配列から複数の最大値のインデックスを求める方法

方法1: NumPyを使用する方法

NumPyライブラリを使用すると、簡単に配列から複数の最大値のインデックスを取得することができます。

以下はNumPyを使用したサンプルコードです。

import numpy as np

arr = np.array([3, 7, 2, 7, 8, 2, 7])
max_value = np.max(arr)
max_indices = np.where(arr == max_value)[0]

print("配列:", arr)
print("最大値:", max_value)
print("最大値のインデックス:", max_indices)
配列: [3 7 2 7 8 2 7]
最大値: 8
最大値のインデックス: [4]

方法2: 純粋なPythonコードを使用する方法

NumPyを使用せずに、純粋なPythonコードで配列から複数の最大値のインデックスを取得する方法もあります。

以下はそのサンプルコードです。

arr = [3, 7, 2, 7, 8, 2, 7]
max_value = max(arr)
max_indices = [i for i, v in enumerate(arr) if v == max_value]

print("配列:", arr)
print("最大値:", max_value)
print("最大値のインデックス:", max_indices)
配列: [3, 7, 2, 7, 8, 2, 7]
最大値: 8
最大値のインデックス: [4]

方法3: リスト内包表記を使用する方法

リスト内包表記を活用して、配列から複数の最大値のインデックスを取得する方法もあります。

以下はそのサンプルコードです。

arr = [3, 7, 2, 7, 8, 2, 7]
max_value = max(arr)
max_indices = [i for i, v in enumerate(arr) if v == max_value]

print("配列:", arr)
print("最大値:", max_value)
print("最大値のインデックス:", max_indices)
配列: [3, 7, 2, 7, 8, 2, 7]
最大値: 8
最大値のインデックス: [4]

方法4: 関数を作成して解決する方法

関数を作成することで、繰り返し利用しやすくなります。

以下は関数を使用して配列から複数の最大値のインデックスを取得するサンプルコードです。

def find_max_indices(arr):
    max_value = max(arr)
    max_indices = [i for i, v in enumerate(arr) if v == max_value]
    return max_indices

arr = [3, 7, 2, 7, 8, 2, 7]
max_indices = find_max_indices(arr)

print("配列:", arr)
print("最大値のインデックス:", max_indices)
配列: [3, 7, 2, 7, 8, 2, 7]
最大値のインデックス: [4]

終わりに

これで、配列から複数の最大値のインデックスを取得する方法について学びました。

異なる方法を使って同じ結果を得ることができるので、状況に応じて適切な方法を選択してください。

目次から探す