すでに作成した配列に新しくデータを追加したいと思ったことはありませんか?
numpy.append()を使用すると用意した配列の最後に新たなデータを追加することが可能です。
本記事では、numpy.append()の使い方について、実際のコードを書きながら、分かりやすく紹介していきます。
本記事のコードは全てグーグルコラボラトリーで記述・動作確認をしています。
グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。
データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!
numpyを使用するには事前にnumpyをインストールする必要があります。
グーグルコラボラトリーを利用している人はすでにインストールされているので不要です。
自分で環境を用意している人は環境構築を行なってください。
コーディングできる準備ができたら、はじめにnumpyをインポートして使用できるようにしましょう。
numpyはnpと省略してインポートするのが一般的です。
import numpy as np
numpy.append()の使い方
numpy.append()は配列の最後に要素を追加する関数です。
numpy.append(用意した配列, 追加したい配列)のように記述して使います。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
new_arr = np.append(arr1, arr2)
print(new_arr)
出力:
[1 2 3 4 5 6]
arr1の末尾にarr2が追加された、1次元配列を得ました。
多次元配列(2次元・3次元以上)でのnumpy.append()
2次元以上の多次元配列でもnumpy.append()を使用可能です。
この時、引数axisで結合する軸を指定してください。
arr3 = np.array([[1, 2, 3],
[4, 5, 6]])
arr4 = np.array([[7, 8, 9],
[10, 11, 12]])
arr_axis0 = np.append(arr3, arr4, axis=0)
print('arr_axis0の配列')
print(arr_axis0)
arr_axis1 = np.append(arr3, arr4, axis=1)
print('arr_axis1の配列')
print(arr_axis1)
出力:
arr_axis0の配列
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
arr_axis1の配列
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
配列を結合する方法は、numpy.append()の他にもあります。特にnumpy.concatenate()は汎用的でオススメです!
ちなみに軸を指定しなくでも動作しますが、1次元配列になります。
多次元配列を1次元配列にすることを平坦化(フラット化、1次元化)と言います。
arr_noaxis = np.append(arr3, arr4)
print(arr_noaxis)
print(arr_noaxis.shape)
出力:
[ 1 2 3 4 5 6 7 8 9 10 11 12]
(12,)
配列の形状が同じで無いとエラーになってしまう点に注意が必要です。
arr5 = np.array([1, 2, 3])
np.append(arr4, arr5, axis=0)
出力:
ValueError:
上記の例では、arr_5が1次元配列のためエラーが出ました。
arr_5を1行3列の2次元配列にreshapeすることでエラーの解決が可能です。
print(arr5)
print(arr5.shape)
re_arr5 = arr5.reshape(1, 3)
print(re_arr5)
print(re_arr5.shape)
出力:
[1 2 3] (3,) [[1 2 3]] (1, 3)
arr4_re5 = np.append(arr4, re_arr5, axis=0)
print(arr4_re5)
出力:
[[ 7 8 9]
[10 11 12]
[ 1 2 3]]
axisを指定しない場合は配列の形状が違っても動作します。
これは追加する前に両方の配列を平坦化するためです。
arr1_3 = np.append(arr1, arr3)
print(arr1_3)
出力:
[1 2 3 1 2 3 4 5 6]
まとめ
今回はnumpy.append()について紹介しました。
numpy.append()は配列の末尾に要素を追加する関数です。
多次元配列の場合は引数axisを指定しましょう。
numpy.append()についてよくある質問
- 配列の途中に要素を追加したいです。
-
numpy.insert()を使用しましょう。
numpy.insert(挿入される配列, 挿入したい位置, 挿入したい要素, 軸)で使用可能です。
- 配列を削除したいです。
-
numpy.delete()を使用しましょう。
numpy.insert(操作したい配列, 削除したい位置, 削除する軸)で使用可能です。
- pythonについてもっと勉強したいです!
-
pythonを勉強するには書籍・動画・プログラミングスクールなどがあります。特にUdemyは有料ですが、pythonを勉強できる動画がたくさんあるのでおすすめです。
合わせて読みたい
コメント