NumPyの配列の操作について

今回は、NumPyの配列の操作方法について。

NumPyの配列操作


要素の参照

NumPyの配列の要素を参照する方法は、Pythonのリスト同じように、0から始まるインデックスを指定して行う。

配列にない要素を指定すると、IndexErrorとなる。

1次元配列の参照

1次元配列の要素の参照を行う書式は以下の通り

配列名[インデックス]

1〜5までの1次元配列の各要素を参照する例
>>> import numpy as np
>>> arr = np.array([1,2,3,4,5])
>>> arr[0]
1
>>> arr[1]
2
>>> arr[2]
3
>>> arr[3]
4
>>> arr[4]
5
>>> arr[5]

多次元配列の要素の参照

多次元配列の要素を参照する書式は以下の通り

配列名[1次元のインデックス][2次元のインデックス]...

または、

配列名[1次元のインデックス,2次元のインデックス,...]

2行3列の配列の各要素を参照する例
>>> import numpy as np
>>>arr = np.array([[1,2,3],[4,5,6]])
>>>arr[0,0]
1
>>>arr[0,1]
2
>>>arr[0,2]
3
>>>arr[1,0]
4
>>>arr[1,1]
5
>>>arr[1,2]
6


要素の更新

配列の要素を更新するには、インデックスで指定した要素に=で新しい値を指定する。

要素更新の書式
配列名[インデックス] = 新しい値

1次元配列の要素を更新する例。3つ目の要素(インデックスは2)の値を3から33に変更する。
>>>import numpy as np
>>>arr = np.array([1,2,3,4,5])
>>>arr[2] = 33
>>>arr
array([ 1,  2, 33,  4,  5])

多次元配列の更新

多次元配列の要素の更新も、1次元配列の要素の更新と同じように、インデックスで指定した要素に=で新しい値を指定する。

2行3列の2次元配列の、2行目の最初(1,0)の値(4)を44に変更する。
>>>import numpy as np
>>>arr = np.array([[1,2,3],[4,5,6]])
>>>arr[1,0] = 44
>>>arr
array([[ 1,  2,  3],
       [44,  5,  6]])


要素の追加

配列の要素を追加するには、append()を使う。
追加される場所は配列の最後。

append()の書式
append(対象の配列, 追加する値, axis = none)

追加する値は、リストやタプルで複数を指定することができる。
axisは、0を指定すると行の追加、1を指定すると列の追加となる。
appendを実行すると、要素が追加された新しい配列が返され、元の配列は変化しない。

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

0〜4までの1次元配列にリストを使って5,6,7を追加する。
import numpy as np

arr1 = np.array([0,1,2,3,4])
arr2 = np.append(arr1, [5,6,7])

print('arr1:' + str(arr1))
print('arr2:' + str(arr2))

#結果
arr1:[0 1 2 3 4]
arr2:[0 1 2 3 4 5 6 7]




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

2行3列の配列に1行追加する例。
import numpy as np

arr1 = np.array([1,2,3,4,5,6])
arr1 = arr1.reshape(2,3)
arr2 = np.append(arr1, [[7,8,9]], axis=0)

print('arr1:' + str(arr1))
print('arr2:' + str(arr2))

多次元配列に要素を追加する場合、追加される配列の次元に合わせて要素を追加しなければいけない。

上記の例では、追加される配列arr1は2次元配列なので、追加する7,8,9は二重の[]で囲い、2次元配列に揃えている。


要素の挿入

要素を挿入するには、insertを使う。insertを使うと配列のどこに新しい値を挿入するか指定することができる。

insertの書式
insert(対象の配列, 挿入位置, 挿入する値, axis=None)

挿入位置には挿入する位置をインデックスで指定する。挿入する値はリストやタプルで複数を指定することができる。
axisは、0を指定すると行の追加、1を指定すると列の追加となる。

1次元配列に値を挿入する

1次元配列の3番目(インデックスは2)に値(3)を追加する例。
>>> import numpy as np
>>> arr1 = np.array([1,2,4,5])
>>> arr2 = np.insert(arr1, 2, 3)
>>> arr2
array([1, 2, 3, 4, 5])

2次元配列に値を挿入する

2行3列の2次元配列の2行目(行のインデックスは1)に1列挿入する例。
import numpy as np

arr1 = np.array([1,2,3,7,8,9])
arr2 = arr1.reshape(2,3)
arr2 = np.insert(arr2, 1, [[4,5,6]], axis=0)

print('arr1:' + str(arr1))
print('arr2:' + str(arr2))


要素の削除

NumPyの配列の要素を削除するには、deleteを使う。

deleteの書式
delete(対象の配列, 削除位置, axis=None)

削除位置は配列のインデックスで指定する。
axisは、0を指定すると行の削除、1を指定すると列の削除となる。

1次元配列の要素の削除

1〜5までの1次元配列の3番目の要素(インデックスは2)を削除する例。
import numpy as np

arr = np.array([1,2,3,4,5])
arr = np.delete(arr, 2)

print('arr:' + str(arr))

2次元配列の要素の削除

2次元配列の2列目(インデックスは1)を削除する例。
import numpy as np

arr1 = np.array([1,2,3,4,5,6,7,8,9])
arr2 = arr1.reshape(3,3)
print('arr2(削除前):')
print(arr2)
print('-' *30)

arr2 = np.delete(arr2, 1, axis=1)
print('arr2(削除後):')
print(arr2)

#結果
arr2(削除前):
[[1 2 3]
 [4 5 6]
 [7 8 9]]
------------------------------
arr2(削除後):
[[1 3]
 [4 6]
 [7 9]]


以上、

NumPyの配列操作について。



今回はここまで。

ずっと基本ばかり勉強してるので、そろそろ実用的なことも勉強したくなってきた。

0 件のコメント :