numpy.appendってなんですか?
ndarray(Numpy配列)に要素を追加する関数だ。
なお、Listのappendとは使い方が違う。
✔️ 本記事のテーマ
numpy.append関数の使い方
✔️ 読者さんへの前置きメッセージ
本記事は「Numpyのappend関数」について書いています。
この記事を読むことで
「numpy.append関数の使い方と使いどころ」を理解できます。
Numpyは数値計算に特化したPythonライブラリです。
Numpyライブラリは、
機械学習や画像処理などの複雑な計算が必要となる処理では欠かすことができません。
Numpyのappend関数は、Numpyの配列に要素を追加するときに使用します。
それでは、Numpyライブラリのappend関数について解説していきましょう。
なお、numpyのその他の関数については以下の記事でも解説しています。
Numpyとは?
numpyは、Pythonで数値計算をするためのライブラリです。
基本的な計算はPythonだけでも出来ますが、
numpyを使うことで難易度の高い計算や複雑な計算を
簡単にそして高速に行うことができます。
近年、numpyの注目度が高まっている背景には、
機械学習の台頭が挙げられるでしょう。
Python自体、機械学習と関連の高い言語ですが、
numpyライブラリはその便利さから機械学習分野では欠かせないライブラリです。
なお、Numpyついての詳細は
「numpyの使い方と便利な関数」の記事でも解説しています。
numpy.append関数の使い方
numpy.append関数を使うことで、以下のことができるようになります。
- 配列(ndarray)の末尾に要素を追加
- 配列(ndarray)の先頭に要素を追加
「末尾/先頭のどちらに追加するか」によって使い方が変わります。
配列(ndarray)の末尾に要素を追加
numpy.append関数は引数を2つ取ります。
先頭に追加する場合は、
第1引数に配列ndarray、第2引数に追加する要素を指定します。
なお、numpy.append関数は、新たなndarrayを返します。
import numpy as np
input = np.array([1, 2, 3])
# [1 2 3]
output = np.append(input, 4)
print(output)
# [1 2 3 4]
配列(ndarray)の先頭に要素を追加
Ndarrayの先頭に要素を追加する場合は、先ほどの第1引数と第2引数を入れ替えます。
第1引数に配列ndarray、第2引数に追加する要素を指定します。
import numpy as np
input = np.array([1, 2, 3])
# [1 2 3]
output = np.append(0, input)
print(output)
# [0 1 2 3]
すなわち、
- 要素を先頭に追加するなら(要素, 配列)
- 末尾に追加するなら(配列, 要素)
の順で引数を指定します。
かなり直感的な使い方ですね。
一次元配列のnumpy.append関数
一次元配列に対するnumpy.append関数の使い方を解説していきます。
一次元配列に対するappendはシンプルです。
既に説明した通り、
要素を先頭に追加するなら第1引数、末尾に追加するなら第2引数
に要素を渡してやれば、OKです。
import numpy as np
input = np.array([1, 2, 3])
# [1 2 3]
output = np.append(input, 4)
print(output)
# [1 2 3 4]
なお、numpy.append関数では、
以下のようにリストに対して、さらにリストを追加することもできます。
import numpy as np
input_1 = np.array([1, 2, 3])
# [1 2 3]
input_2 = np.array([4, 5, 6])
# [4 5 6]
output = np.append(input_1, input_2)
print(output)
# [1 2 3 4 5 6]
二次元配列のnumpy.append
次は二次元配列に対するnumpy.append関数の使い方を解説しましょう。
二次元配列に対するnumpy.append関数には2通りの使い方があります。
- 一次元配列に平坦化してから追加する
- 次元を保ったまま追加する
順番に解説していきましょう。
一次元配列に平坦化してから追加する
二次元配列に対するnumpy.append関数はデフォルトでこの動作になります。
よって、特に引数を与えずに、
二次元配列に対してnumpy.append関数をかけるとこの動作をします。
動作内容を具体的に説明しましょう。
input = np.array([[0, 1, 2], [3, 4, 5]])
# [ [0 1 2]
# [3 4 5] ]
output = np.append(input, 10))
# [ 0 1 2 3 4 5 10 ]
このように二次元配列が一次元配列に平坦化され、
その一次元配列に対して要素を追加しています。
また、二つの二次元配列をnumpy.append関数で足し合わせることで、
合体させた一次元配列を作ることもできます。
input_1 = np.array([[1, 2, 3], [4, 5, 6]])
# [ [1 2 3]
# [4 5 6] ]
input_2 = np.array([[10, 20, 30], [40, 50, 60]])
# [ [10 20 30]
# [40 50 60] ]
output = np.append(input_1, input_2))
# [ 1 2 3 4 5 6 10 20 30 40 50 60 ]
次元を保ったまま追加する
引数axisを指定することで、次元を保ったまま追加することができます。
実際のユースケースとしてはこちらの方が多いでしょう。
第3引数としてaxis=0を指定すると縦方向に追加、
axis=1を指定すると横方向に追加されます。
実際にコードを書いてみましょう。
input_1 = np.array([[1, 2, 3], [4, 5, 6]])
# [ [1 2 3]
# [4 5 6] ]
input_2 = np.array([[10, 20, 30], [40, 50, 60]])
# [ [10 20 30]
# [40 50 60] ]
print(np.append(input_1, input_2, axis=0))
# [[ 1 2 3]
# [ 4 5 6]
# [10 20 30]
# [40 50 60]]
print(np.append(input_1, input_2, axis=1))
# [[ 1 2 3 10 20 30]
# [ 4 5 6 40 50 60]]
このように、axis=0を指定するとinput_2の要素([10, 20, 30]と[40, 50, 60])が新たに縦方向に追加されています。
一方、axis=1を指定するとinput_2の要素が横方向に追加され、
[ 1 2 3 10 20 30]と[ 4 5 6 40 50 60]という要素の配列になっています。
なお、一次元配列の時と同じように引数を入れ替えることで、
追加する順番を入れ替えることができます。
input_1 = np.array([[1, 2, 3], [4, 5, 6]])
# [ [1 2 3]
# [4 5 6] ]
input_2 = np.array([[10, 20, 30], [40, 50, 60]])
# [ [10 20 30]
# [40 50 60] ]
print(np.append(input_2, input_1, axis=0))
# [[10 20 30]
# [40 50 60]
# [ 1 2 3]
# [ 4 5 6] ]
print(np.append(input_2, input_1, axis=1))
# [[ 10 20 30 1 2 3 ]
# [ 40 50 60 4 5 6 ]]
NumpyやPythonについてもっとスキルをつけるなら
今回は、Numpyのappend関数について解説しました。
Numpyは画像認識や機械学習を行う上では、欠かすことのできないライブラリです。
Numpyを実践的に学ぶためには以下の書籍がオススメです。
この書籍はNumPyや高速計算手法についてかなり丁寧に解説されています。
NumPyの基本から始まり、現場で使える実践的な高速データ処理手法について解説します。
Numpy の基礎から実用まで幅広く学びたい方にオススメの書籍です。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント