Skip to content

5. 配列のインデックスとスライス

NumPy 配列は非常に効率的にインデックス付けとスライスを行うことができ、データの一部を選び出したり変更したりするのに便利です。この章では、NumPy 配列のインデックスとスライスについて詳しく見ていきましょう。

5.1 配列のインデックス

NumPy 配列のインデックスは 0 から始まります。以下に基本的なインデックスの例を示します。

import numpy as np

a = np.array([10, 20, 30, 40, 50])
print(a[0])  # 出力: 10
print(a[2])  # 出力: 30

多次元配列の場合、インデックスはカンマを使って指定します。

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b[0, 2])  # 出力: 3
print(b[2, 1])  # 出力: 8

5.2 配列のスライス

配列のスライスを使うと、配列の一部を抽出することができます。スライスは start:stop:step の形式で指定しますが、startstopstep は省略可能です。

c = np.array([0, 10, 20, 30, 40, 50, 60, 70])

# スライスの例
print(c[2:5])    # 出力: [20 30 40]
print(c[:4])     # 出力: [ 0 10 20 30]
print(c[4:])     # 出力: [40 50 60 70]
print(c[::2])    # 出力: [ 0 20 40 60]

多次元配列のスライスの場合も同様に、各次元ごとにスライスを指定します。

d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])

# 多次元配列のスライス
print(d[:2, 1:])    # 出力: [[20 30]
                    #        [50 60]]
print(d[1:, ::2])   # 出力: [[40 60]
                    #        [70 90]]

5.3 インデックスとスライスの併用

インデックスとスライスは併用して効率的にデータを取得することができます。

# 2行目のすべての要素を取得し、さらにその中から2列目の要素を取得
print(d[1, :])    # 出力: [40 50 60]

以上で、NumPy 配列のインデックスとスライスの基本的な使い方を学びました。これらの技術を活用して、複雑なデータから必要な情報を効率的に抽出することができます。学生の皆さんも、ぜひ手を動かして試してみてください。