NumPy入門: ファンシーインデックス

NumPyはPython数値計算ライブラリであり、高速な配列処理機能を提供しています。ファンシーインデックスは、NumPy配列に対して複雑なインデックス操作を行うための一般的な方法です。この記事では、ファンシーインデックスの概要と使用方法を学び、いくつかのコード例を通じてそれを実践します。

目次

  1. ファンシーインデックスとは
  2. 基本的なファンシーインデックスの使用方法
  3. ブールインデックス
  4. ファンシーインデックスを利用した配列操作
  5. まとめ

ファンシーインデックスとは

ファンシーインデックスは、NumPy配列の要素にアクセスする際に、整数のリストや配列をインデックスとして使用することができる特徴です。これにより、複雑なインデックス操作や配列の要素の選択が可能になります。

import numpy as np

arr = np.arange(10)
indices = [1, 3, 4]
result = arr[indices]
print(result)

基本的なファンシーインデックスの使用方法

整数リストや配列を使って、一度に複数の要素にアクセスしてみましょう。

import numpy as np

arr = np.arange(0, 100, 10)
indices = [1, 4, 7]
selected_elements = arr[indices]
print(selected_elements)

次のような2次元配列の場合、行や列のインデックスを指定することで特定の要素にアクセスできます。

import numpy as np

matrix = np.array([[0, 1, 2],
                   [3, 4, 5],
                   [6, 7, 8]])

row_indices = [0, 1]
col_indices = [1, 2]
selected_elements = matrix[row_indices, col_indices]
print(selected_elements)

ブールインデックス

ブールインデックスを使用して、条件に一致する要素を選択することができます。

import numpy as np

arr = np.array([2, 4, 6, 3, 5, 7, 1, 9])
mask = arr % 2 == 0  # 偶数の配列要素にTrueを設定
even_numbers = arr[mask]
print(even_numbers)

ファンシーインデックスを利用した配列操作

ファンシーインデックスを使用して、配列の要素を置換したり、要素の順序を変更したりすることができます。

import numpy as np

arr = np.array([10, 20, 30, 40])
indices = [3, 0, 1, 2]
reordered_array = arr[indices]
print(reordered_array)

また、配列の一部の要素を更新することも可能です。

arr = np.array([1, 2, 3, 4, 5])
mask = arr % 2 == 0
arr[mask] *= -1
print(arr)

まとめ

このブログ記事では、ファンシーインデックスを使って、NumPy配列の要素にアクセスしたり、操作したりする方法を学びました。これは、Pythonでの数値計算やデータ処理を効率よく行う際に非常に便利な機能です。実際にファンシーインデックスを使用して配列操作を行い、コード例を通して理解を深めることができました。