PythonでNumPyの配列(array)の値を追加・削除する方法まとめ

Pythonでは、NumPy の配列も、リストや文字列などの他のオブジェクトと同じくミュータブルです。そのため、値を後から追加したり削除したりすることができます。

そこで、ここでは、

  • 配列に値を追加する方法 | append() 関数
  • 配列に値を挿入する方法 | insert() 関数
  • 配列の値を削除する方法 | delete() 関数

を解説していきたいと思います。

目次

1. 配列に値を追加する | append() 関数

Python で NumPy の配列に要素を追加するには、numpy モジュールの append() 関数を使います。以下のように、第一引数に配列を、第二引数に追加する値を渡します。値は、リストやタプルで複数を同時に渡すこともできます。

append() 関数を使うと、新しい配列を返し、元の配列に変化はありません。それぞれ、例を見ていきましょう。

1.1. 一次元配列に値を追加する

次の例では、一次元配列に、新しい値 3 を追加しています。

In [1]:
import numpy as np
array1 = np.array([0, 1, 2])
'''array1 に 3 を追加します。'''
array2 = np.append(array1, 3)
array2
Out[1]:
array([0, 1, 2, 3])

1.2. 一次元配列に複数の値をリスト形式で同時に追加する

追加する値をリストやタプルで指定すれば、複数の値を一度に追加することができます。

In [2]:
'''リストを渡すと複数の値を同時に追加することができます。'''
array3 = np.append(array1, [3, 4, 5])
array3
Out[2]:
array([0, 1, 2, 3, 4, 5])

1.3. 多次元配列に値を追加する

次の例では、二次元配列に複数の値を追加しています。多次元配列に値を追加する時は、第三引数に “axis = ” を渡します。 “axis = 0” で行を、 1 で列を、 2 で奥行きを追加することができます。

In [3]:
'''多次元配列に要素を追加するには第三引数に 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
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

append() 関数の第二引数の値を、追加先の二次元配列に合わせて書いていることにご注目ください。

2. 配列に値を挿入する | insert() 関数

配列に要素を挿入する時は、numpy モジュールの insert() 関数を使います。第一引数に配列、第二引数に挿入する位置、第三引数に挿入する値を渡します。append() 関数と同様に、値は、リストやタプルで複数を同時に追加することもできます。

早速見ていきましょう。

2.1. 一次元配列に値を挿入する

次のコードでは、インデックス番号 1 番の位置に、新しい値 3 を挿入しています。インデックス番号の数え方はリストと同じです。「Pythonのリストのスライスと分割の方法まとめ」で解説しています。

In [1]:
import numpy as np
array1 = ([0, 1, 2])
array2 = np.insert(array1, 1, 3) #インデックス番号 1 番の位置に 3 を追加。
array2
Out[1]:
array([0, 3, 1, 2])

2.2. 複数の値を同時に挿入する

追加する値をリストやタプルで渡せば、同時に複数の値を挿入することができます。

In [2]:
'''リストで複数の値を同時に渡します。'''
array3 = np.insert(array1, 2, [3, 4])
array3
Out[2]:
array([0, 1, 3, 4, 2])

2.3. 文字列配列に値を挿入する時は要注意

文字列の配列に、別の文字列を挿入する時は、現在の配列内の最大の文字数に合わせられてしまいます。

次のコードをご覧ください。

In [3]:
'''文字列の配列に値を追加する時は注意が必要です。'''
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.insert(array_str1, 0, "strawberry")
array_str2 #元の配列の文字列の文字数が最大6文字なので 'strawb' で切れてしまいます。
Out[3]:
array(['strawb', 'apple', 'banana', 'cherry'], dtype='<U6')

元の配列の値の中で、最大の文字数は 6 です。新たに追加した文字列の文字数は、それを超過してしまっているため、最初の 6 文字までしか挿入されません。

3. 配列から値を削除する方法 | delete() 関数

配列の中から、指定の値を削除したい場合は、nupmy モジュールの delete() 関数を使います。第一引数に配列、第二引数に削除する値の位置を渡します。

次のコードをご覧下さい。配列の最後の値を削除しています。

In [1]:
import numpy as np
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.delete(array_str1, 2)
array_str2
Out[1]:
array(['apple', 'banana'], dtype='<U6')

余談ですが、len() 関数で、配列の要素の数を調べることができるので、次のように書くこともできます。len() 関数は「PythonでNumPyのarray使って配列を作る方法まとめ」で解説しています。

In [2]:
'''len() 関数を使って次のように書くこともできます。'''
array_str1 = np.array(["apple", "banana", "cherry"])
array_str2 = np.delete(array_str1, len(array_str1) - 1)
array_str2
Out[2]:
array(['apple', 'banana'], dtype='<U6')

4. まとめ

それぞれ、Python で NumPy の配列に、要素を追加する方法と削除する方法を解説しました。そこまで混乱するようなものではないと思います。

実践を通して、使いこなせるようになりましょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる