こんにちは!
皆さんは、NumPy配列の要素へのアクセス方法を知っていますか?
今回の記事では、NumPy配列の様々なアクセス方法について以下の方法を紹介していきます。
- 要素の参照と更新
- 配列のスライス
- 条件式によるアクセス
以降のプログラムでは、簡略化のため、以下のNumPyライブラリのインポートは省略しますが、プログラムを実行する際には必ず忘れないようにしましょう。
import numpy as np
要素の参照と更新
配列の要素にアクセスするには、リストと同じように「インデックス番号」を用います。
1次元配列の参照と更新
配列の要素の参照
はじめに、配列の要素の参照方法について説明します。
以下のプログラムは、1次元配列の要素を参照するプログラムです。
a = np.array([0, 1, 2, 3, 4])
print(a[2]) #先頭から3番目
print(a[4])
print(a[-1]) #最後から1番目
実行結果
2
4
4
インデックス番号は0から始まるため、配列の一番先頭にアクセスするには0を指定します。
また、a[-1]とすると、配列の最後の要素を指定するため、a[4]と同じ結果になっています。
配列の要素の更新
次に、配列の要素の更新方法について説明します。
以下のプログラムは、配列の要素を更新するプログラムです。
b = np.array([0, 1, 2, 3, 4])
b[2] = 0 #先頭から3番目を0に更新
print(b)
実行結果
[0 1 0 3 4]
上記のプログラムでは、配列の3番目の要素を0に更新しています。
2次元配列の参照
2次元配列の参照方法は2種類あります。
この2つの参照方法があるため、どちらも覚えておきまししょう。
以下のプログラムは、2次元配列を参照するプログラムです。
a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(a[1][2])
print(a[1, 2])
実行結果
5
5
実行結果はどちらの参照方法でも同じになります。
配列のスライス
配列のスライスも、リストなどの場合と同じです。
こんにちは! リストのスライスをうまく利用できていますか? 今回の記事では、以下のスライスの方法を紹介します。 通常のスライス要素を等間隔でスライス 通常のスライス スライスとは、リストから一部分を取り出して、[…]
1次元配列のスライス
1次元配列のスライスは、スライスする範囲を[開始位置: 終了位置]で指定します。
以下のプログラムは、1次元配列のスライスを行うプログラムです。
a = np.array([0, 1, 2, 3, 4, 5])
print(a[:]) #全ての要素
print(a[:3]) #インデックス番号0~2の要素
print(a[3:]) #インデックス番号3~最後の要素
print(a[2:5]) #インデックス番号2~4の要素
print(a[::2]) #先頭からインデックス番号1個飛ばしの要素
実行結果
[0 1 2 3 4 5]
[0 1 2]
[3 4 5]
[2 3 4]
[0 2 4]
この注意点はしっかりと意識するようにしましょう。
多次元配列のスライス
2次元配列のスライスは、[行のスライス指定, 列のスライス指定]のように指定します。
全ての行または全ての列を指定するには、1次元配列の場合と同様に、[:]と指定するか、何も書かないかの2つ方法があります。
以下のプログラムは、2次元配列のスライスを行うプログラムです。
a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(a[:2, ]) #行0~1, 列全て
print(a[:, 1:]) #行全て, 1列目以降
print(a[1:, 1:]) #行1~最後, 列1~最後
実行結果
[[0 1 2]
[3 4 5]]
[[1 2]
[4 5]
[7 8]]
[[4 5]
[7 8]]
条件式で要素にアクセスする
リストなどでは、条件式で要素にアクセスする際には、for文やリスト内包表記などを用いる必要があります。
しかしNumPy配列では、条件式を指定して簡単に要素にアクセスすることができます。
条件に合う要素を参照する
[条件式]で、条件式に合う要素のみを参照することができます。
参照された要素はまとめて、新しい配列として返されます。
以下のプログラムは、条件式で条件に合う要素を参照するプログラムです。
a = np.array([2, 3, 1, 8, 4, 3, 6, 1, 3, 5])
print(a[a>=4])
実行結果
[8 4 6 5]
条件に合う要素を更新する
条件に合う要素を更新するには、普通の配列と同様に行います。
以下のプログラムは、条件に合う要素を更新するプログラムです。
b = np.array([2, 3, 1, 8, 4, 3, 6, 1, 3, 5])
b[b%2==0] = 0
print(b)
実行結果
[0 3 1 0 0 3 0 1 3 5]
まとめ
今回はNumPy配列の様々なアクセス方法について以下の方法を紹介しました。
- 要素の参照と更新
→インデックス番号を用いる - 配列のスライス
→リストのスライスと同じ - 条件式によるアクセス
→NumPy配列は条件式を指定可能
NumPy配列では、リストなどと同じように要素を参照、更新できたり、さらには条件式を指定して簡単に要素にアクセスできるため非常に便利です。
なので、是非使いこなせるようにしましょう!
まとめ記事に戻る