numpy.append()
numpy.append() は 配列の末尾 に 要素を追加 する関数です。
numpy.append(arr, values, axis=None)
arr には配列 (ndarray) 以外にリストやタプルなども渡せます (このような簡易表現は NumPy のコードで普通に使われます)。戻り値は必ず配列となります。
# NUMPY_APPEND
# In[1]
import numpy as np
# [1 2 3]の末尾に99を追加
a = np.append([1, 2, 3], 99)
print(a)
# [ 1 2 3 99]
arr が 2 次元配列のケースを見てみましょう。axis を何も指定しなければ、arr をフラット化したあとで values が追加されます。
# In[2]
# 2次元配列を定義
x = np.array([[1, 2, 3],
[4, 5, 6]])
# xをフラット化して末尾に[7 8 9]を追加
b = np.append(x, [7, 8, 9])
print(b)
# [1 2 3 4 5 6 7 8 9]
axis=0 を指定することで、末尾の行に追加できますが、values の次元や指定軸に沿ったサイズは arr と一致していなければなりません。
# In[3]
# xの末尾の行に[7 8 9]を追加
c = np.append(x, [[7, 8, 9]], axis=0)
print(c)
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
軸に沿ったサイズが揃っていないとエラーを発生します:
# In[4]
d = np.append(x, [[7, 8, 9]], axis=1)
print(d)
# ValueError:
# all the input array dimensions except for the concatenation axis must match exactly
縦サイズ 2 の配列であれば、x の末尾の列に追加できます。
# In[5]
# 縦ベクトルを定義
v = np.array([[7],
[8]])
# xの末尾の列にvを追加
e = np.append(x, v, axis=1)
print(e)
# [[1 2 3 7]
# [4 5 6 8]]
append は「付け足す」
append は「付け加える、追記する」という意味の単語です。何か本体があって、それに「少しだけ」付け加えるというイメージです。たとえば「文書に署名する」を “to append one’s signature” と表現します。ちなみに append と同根の名詞 appendix は「付録」という意味があります。本体の末尾に付け加えられるイメージから、numpy.appned() は配列の末尾に要素を付け加える関数となっています。Python 本体にもリストの末尾に要素を追加する append() 関数が用意されています。
ChatGPTにnumpy.appendを会話形式で説明してもらいました
生徒: こんにちは、講師さん!今日はNumPyのappend関数について教えていただけますか?
講師: もちろんです!NumPyのappend関数は、NumPy配列に要素を追加するための関数です。新しい要素を既存の配列に追加したい場合に便利です。
生徒: なるほど、新しい要素を既存の配列に追加するんですね。具体的な使い方を教えていただけますか?
講師: もちろんです。append関数は、2つの引数を受け取ります。1つ目の引数は既存の配列であり、2つ目の引数は追加したい要素です。追加したい要素は、既存の配列の末尾に追加されます。
生徒: なるほど、それなら実際のコードで見てみたいです。
講師: 分かりました。以下の例をご覧ください。
◆◆◆◆◆
import numpy as np
# 既存の配列を作成
array = np.array([1, 2, 3])
# 要素を追加
new_element = 4
new_array = np.append(array, new_element)
print(“新しい配列:”, new_array)
◆◆◆◆◆
この例では、arrayという既存の配列に要素1, 2, 3が含まれています。そして、new_elementという新しい要素として4を用意しました。np.append関数を使って、arrayにnew_elementを追加しています。
生徒: なるほど、結果はどうなるんですか?
講師: 追加後の結果はnew_arrayという新しい配列として表示されます。new_arrayを出力すると、[1, 2, 3, 4]という配列が得られます。
生徒: なるほど、理解しました!append関数は既存の配列に新しい要素を追加するためのものですね。他にも何か重要なポイントはありますか?
講師: はい、注意点としては、np.append関数は新しい配列を作成するため、元の配列は変更されないということです。また、NumPyの配列は要素の数が固定されているため、要素を追加するたびに新しい配列が作成されることになります。
生徒: なるほど、大切な情報ですね。np.append関数を使って、配列に要素を追加する方法が分かりました。ありがとうございました! 講師さん、numpy.appendを使って簡単なアプリを作ってみたいです。どのようなアプリを作ればいいですか?
講師: もちろんです!では、簡単な採点アプリを作ってみましょう。ユーザーが複数のテストスコアを入力し、それらのスコアを配列に保存していきます。最後に、全体の平均スコアを計算して表示するプログラムです。どうでしょうか?
生徒: それは素晴らしいアイデアです!早速プログラムを作りましょう。
このプログラムでは、scoresという空のNumPy配列を作成し、ユーザーからのテストスコアを順に入力して配列に追加します。qが入力されるまで繰り返されます。最後に、np.mean関数を使ってスコアの平均値を計算し、結果を表示します。
生徒: 素晴らしい!ユーザーがテストスコアを入力し、最後に平均スコアが表示されるんですね。これは便利なアプリです!
講師: はい、numpy.appendを使って配列に要素を追加することで、データの蓄積や集計が簡単に行えます。さまざまな応用が可能ですので、ぜひ自分なりにアレンジしてみてください。