1次元配列
要素の挿入
ndarray
の1次元配列への要素の挿入にはnumpy.insert()
関数を使う。第1引数に対象となる配列、第2引数に挿入位置、第3引数に挿入する値を指定。
指定された位置に値が挿入され、それ以降の要素は一つずつ後ろにずれる。
1 2 3 4 5 6 |
import numpy as np a = np.array([0, 1, 2, 3]) print(np.insert(a, 2, 10)) # [ 0 1 10 2 3] |
要素の追加
配列の最後に要素を追加するには、以下の方法がある。
numpy.append()
numpy.insert()
numpy.hstack()
numpy.append()
第1引数に配列、第2に引数に追加する要素を指定。メソッドではなく、モジュール関数。1次元配列に1次元配列を追加すると、単に要素が追加される。
1 2 3 4 5 |
print(np.append(a, 4)) print(np.append(a, np.array([4, 5, 6]))) # [0 1 2 3 4] # [0 1 2 3 4 5 6] |
numpy.insert()
挿入位置として最後の要素の次の位置を指定する。この値は配列のサイズと等しい。
1 2 3 |
print(np.insert(a, len(a), 20)) # [ 0 1 2 3 20] |
numpy.hstack()
注意点として、引数として指定するのはタプルで、そのタプルの要素をつなげた結果が返される点で、追加される要素を配列としなければならない。
1 2 3 |
print(np.hstack( (a, [40]) )) # [ 0 1 2 3 40] |
2次元配列
numpy.insert()
で単純に位置指定だけすると、1次元配列として扱われてしまう。
1 2 3 4 5 |
print(np.insert(a, 2, np.array([9, 9, 9]))) print(np.insert(a, 4, np.array([9, 9, 9]))) # [0 1 9 9 9 2 3 4 5 6 7 8] # [0 1 2 3 9 9 9 4 5 6 7 8] |
行の挿入・追加
1次元配列を行として挿入するには、numpy.insert()
で第4引数にaxis=0
を指定する。
1 2 3 4 5 6 |
print(np.insert(a, 2, np.array([9, 9, 9]), axis=0)) # [[0 1 2] # [3 4 5] # [9 9 9] # [6 7 8]] |
配列の最後に行を追加するには、numpy.insert()
で最終行の次の位置=行数を指定する。
shape
プロパティーで各次元のサイズの配列が得られるので、行数として第0要素の値を使う。
1 2 3 4 5 6 |
print(np.insert(a, a.shape[0], np.array([9, 9, 9]), axis=0)) # [[0 1 2] # [3 4 5] # [6 7 8] # [9 9 9]] |
numpy.vstack()
を使ってもよい。vstack()
は複数の配列を縦方向につなげていく関数で、つなげる関数群を要素とするタプルを引数とする点に注意。
1 2 3 4 5 6 |
print(np.vstack((a, np.array([9, 9, 9])))) # [[0 1 2] # [3 4 5] # [6 7 8] # [9 9 9]] |
列の挿入・追加
numpy.insert()
で列を挿入する場合、axis=1
を指定する。列の追加の場合でも、追加する配列は行形式の1次元配列で指定。
1 2 3 4 5 |
print(np.insert(a, 2, np.array([9, 9, 9]), axis=1)) # [[0 1 9 2] # [3 4 9 5] # [6 7 9 8]] |
numpy.insert()
で配列に列を追加する場合、指定位置はshape
の第1要素の値。
1 2 3 4 5 |
print(np.insert(a, a.shape[1], np.array([9, 9, 9]), axis=1)) # [[0 1 2 9] # [3 4 5 9] # [6 7 8 9]] |
numpy.hstack()を使ってもよい。hstack()の注意点は以下の通り。
- 引数をタプルとすること
- 追加する配列は列形式とする必要があり、1次元の配列を列形式に変換すること
1 2 3 4 5 |
print(np.hstack((a, np.array([9, 9, 9]).reshape(3, 1)))) # [[0 1 2 9] # [3 4 5 9] # [6 7 8 9]] |