【Python】NumPy配列の操作方法

こんにちは!

今回はNumPy配列の様々な操作方法について紹介していきます。

以降のプログラムでは、簡略化のため、以下のNumPyライブラリのインポートは省略しますが、プログラムを実行する際には必ず忘れないようにしましょう。

import numpy as np




要素を追加、挿入、削除する

1次元配列に要素を追加する

NumPy1次元配列に要素を追加するにはappend()を用います。

以下のプログラムは、NumPy1次元配列に要素を追加するプログラムです。

a = np.array([0, 1, 2])
b = np.append(a, 3)

print(b)

実行結果

[0 1 2 3]

第一引数に追加先の配列を、第二引数に追加する要素を指定します。

また、追加する要素には、リストなどを指定することもできます。

以下のプログラムは、NumPy1次元配列にリスト内の要素を追加するプログラムです。

c = np.array([0, 1, 2])
d = np.append(c, [3, 4])

print(d)

実行結果

[0 1 2 3 4]

リストなどを追加しても、多次元配列になるわけではないので注意が必要です。


多次元配列に要素を追加する

1次元配列に要素を追加する場合と同様に、append()を用います。

以下のプログラムは、NumPy2次元配列に要素を追加するプログラムです。

a = np.array([[0, 1, 2], [3, 4, 5]])
b = np.append(a, [[6, 7, 8]], axis=0)

print(b)

実行結果

[[0 1 2]
 [3 4 5]
 [6 7 8]]

追加したい要素を指定する第二引数には、追加先の配列に合わせた次元のリストなどを指定する必要があります。

axisは、axis=0の時、行を追加、axis=1の時、列を追加します。

行、列共に要素数が合わない場合はエラーが出るので注意が必要です。

要素を挿入する

要素を追加するには、insert ()を用います。

以下のプログラムは、配列の任意の場所に要素を挿入するプログラムです。

a = np.array([0, 1, 2])
b = np.insert(a, 1, 3)

print(b)

実行結果

[0 3 1 2 ]

第一引数に追加先の配列を、第二引数に追加したい場所のインデックス番号を、第三引数に追加する要素を指定します。

また、配列に文字列を追加する際には注意が必要です。

文字列の長さの上限が、配列の要素の中で一番長い文字列の長さが上限になります。

以下のプログラムでは、”ghij”の4字が上限となるため、”klmno”を挿入すると、”o”が切り捨てられます。

c = np.array(["abc", "def", "ghij"])
d = np.insert(c, 0, "klmno")

print(d)

実行結果

['klmn' 'abc' 'def' 'ghij']


要素を削除する

要素を削除するには、delete()を用います。

以下のプログラムは、配列の要素を削除するプログラムです。

a = np.array([10, 20, 30])
b = np.delete(a, 1)

print(b)

実行結果

[10 30]

第一引数に削除したい要素のある配列を、第二引数に削除したい場所のインデックス番号を指定します。


配列を転置する

配列の転置を行うには、 transpose()または Tプロパティを用います。

今回は、両方の方法で転置を行ないますが、実行結果は同じになります。

以下のプログラムは、配列の転置を行うプログラムです。

a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
b = np.transpose(a)
c = a.T
print(b)
print(c)

実行結果

[[0 3 6]
 [1 4 7]
 [2 5 8]]
[[0 3 6]
 [1 4 7]
 [2 5 8]]



配列の次元をあげる

配列の次元をあげるには、np.newaxisを用います。

以下のプログラムは、配列の次元をあげるプログラムです。np.newaxisを以下のプログラムのように用いることによって、新しい次元を作成しています。

a = np.array([0, 1, 2])
b = a[:, np.newaxis]

print(b)

実行結果

[[0]
 [1]
 [2]]



配列をソートする

昇順にソートするには、sort()メソッドまたはsort()関数を用います。

以下の2つのプログラムは、配列の中身をを昇順にソートするプログラムです。

a = np.array([3, 8, 1, 1, 3, 9, 5, 6, 4, 2, 7])
a.sort()

print(a)
a = np.array([3, 8, 1, 1, 3, 9, 5, 6, 4, 2, 7])
b = np.sort(a)

print(b)

実行結果

[1 1 2 3 3 4 5 6 7 8 9]

リストで用いるsort()とは違い、numpy.ndarrayのsort()メソッドには、reverseオプションがないため、降順に並び替えることができないので注意が必要です。


まとめ

様々なNumPy配列の操作方法について理解できたでしょうか?

NumPy配列は、通常のリストなどよりも柔軟に配列の操作が行えるので、しっかりとNumPy配列を用いるとどのようなことができるのかということを頭に入れておきましょう。


まとめ記事に戻る