Pythonでは、NumPy の配列も、リストや文字列などの他のオブジェクトと同じくミュータブルです。そのため、値を後から追加したり削除したりすることができます。
そこで、ここでは、
- 配列に値を追加する方法 | append() 関数
- 配列に値を挿入する方法 | insert() 関数
- 配列の値を削除する方法 | delete() 関数
を解説していきたいと思います。
1. 配列に値を追加する | append() 関数
Python で NumPy の配列に要素を追加するには、numpy モジュールの append() 関数を使います。以下のように、第一引数に配列を、第二引数に追加する値を渡します。値は、リストやタプルで複数を同時に渡すこともできます。
append() 関数を使うと、新しい配列を返し、元の配列に変化はありません。それぞれ、例を見ていきましょう。
1.1. 一次元配列に値を追加する
次の例では、一次元配列に、新しい値 3 を追加しています。
import numpy as np
array1 = np.array([0, 1, 2])
'''array1 に 3 を追加します。'''
array2 = np.append(array1, 3)
array2
1.2. 一次元配列に複数の値をリスト形式で同時に追加する
追加する値をリストやタプルで指定すれば、複数の値を一度に追加することができます。
'''リストを渡すと複数の値を同時に追加することができます。'''
array3 = np.append(array1, [3, 4, 5])
array3
1.3. 多次元配列に値を追加する
次の例では、二次元配列に複数の値を追加しています。多次元配列に値を追加する時は、第三引数に “axis = ” を渡します。 “axis = 0” で行を、 1 で列を、 2 で奥行きを追加することができます。
'''多次元配列に要素を追加するには第三引数に axis を指定します。'''
array4 = np.array([1, 2, 3, 4, 5, 6]).reshape(2, 3) # 2 行 × 3 列の多次元配列。
'''array1の配列に合わせて、値は二次元配列の状態で追加します。'''
array5 = np.append(array4, [[7, 8, 9]], axis=0) # axis = 0 で行を、 1 で列を追加します。
array5
append() 関数の第二引数の値を、追加先の二次元配列に合わせて書いていることにご注目ください。
2. 配列に値を挿入する | insert() 関数
配列に要素を挿入する時は、numpy モジュールの insert() 関数を使います。第一引数に配列、第二引数に挿入する位置、第三引数に挿入する値を渡します。append() 関数と同様に、値は、リストやタプルで複数を同時に追加することもできます。
早速見ていきましょう。
2.1. 一次元配列に値を挿入する
次のコードでは、インデックス番号 1 番の位置に、新しい値 3 を挿入しています。インデックス番号の数え方はリストと同じです。「Pythonのリストのスライスと分割の方法まとめ」で解説しています。
import numpy as np
array1 = ([0, 1, 2])
array2 = np.insert(array1, 1, 3) #インデックス番号 1 番の位置に 3 を追加。
array2
2.2. 複数の値を同時に挿入する
追加する値をリストやタプルで渡せば、同時に複数の値を挿入することができます。
'''リストで複数の値を同時に渡します。'''
array3 = np.insert(array1, 2, [3, 4])
array3
2.3. 文字列配列に値を挿入する時は要注意
文字列の配列に、別の文字列を挿入する時は、現在の配列内の最大の文字数に合わせられてしまいます。
次のコードをご覧ください。
'''文字列の配列に値を追加する時は注意が必要です。'''
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.insert(array_str1, 0, "strawberry")
array_str2 #元の配列の文字列の文字数が最大6文字なので 'strawb' で切れてしまいます。
元の配列の値の中で、最大の文字数は 6 です。新たに追加した文字列の文字数は、それを超過してしまっているため、最初の 6 文字までしか挿入されません。
3. 配列から値を削除する方法 | delete() 関数
配列の中から、指定の値を削除したい場合は、nupmy モジュールの delete() 関数を使います。第一引数に配列、第二引数に削除する値の位置を渡します。
次のコードをご覧下さい。配列の最後の値を削除しています。
import numpy as np
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.delete(array_str1, 2)
array_str2
余談ですが、len() 関数で、配列の要素の数を調べることができるので、次のように書くこともできます。len() 関数は「PythonでNumPyのarray使って配列を作る方法まとめ」で解説しています。
'''len() 関数を使って次のように書くこともできます。'''
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.delete(array_str1, len(array_str1) - 1)
array_str2
4. まとめ
それぞれ、Python で NumPy の配列に、要素を追加する方法と削除する方法を解説しました。そこまで混乱するようなものではないと思います。
実践を通して、使いこなせるようになりましょう。
コメント