どうもニコイチです。Pythonの強力なライブラリであるNumPyは、データの処理や分析に欠かせません。前回の記事では、NumPyを用いてデータを確認する方法を紹介しました。今回は、データの加工に焦点を当て、配列の追加、挿入、削除、分割、結合について詳しく解説していきます。
目次
配列へのデータの追加・挿入・削除
配列の末尾に要素を追加する
配列に新しい要素を追加する場合、numpy.append()
関数を使用します。
import numpy as np
arr = np.array([1, 2, 3])
print(np.append(arr, 10))
出力:
[1 2 3 10]
指定の位置に要素を挿入する
配列の特定のインデックスに要素を挿入したい場合は、numpy.insert()
を使います。
import numpy as np
arr = np.array([1, 2, 3])
print(np.insert(arr, 1, [10, 11]))
出力:
[ 1 10 11 2 3]
指定のインデックスの要素を削除する
配列の特定の位置の要素を削除するには、numpy.delete()
を使用します。
import numpy as np
arr = np.array([1, 2, 3])
print(np.delete(arr, 1))
出力:
[1 3]
練習問題
次のコードを実行し、出力を確認してみましょう。
import numpy as np
np.random.seed(seed=0)
arr = np.random.randint(0, 100, 5)
print("元の配列:", arr)
# 末尾に100を追加
arr_app = np.append(arr, 100)
print("追加後:", arr_app)
# 先頭から2つ目に99と100を挿入
arr_ins = np.insert(arr, 1, [99, 100])
print("挿入後:", arr_ins)
# 先頭から2つ目の要素を削除
arr_del = np.delete(arr, 1)
print("削除後:", arr_del)
配列の分割
配列を分割することで、必要な部分のみを抽出することができます。
縦方向(列)に分割
numpy.hsplit()
を使用すると、配列を指定した数で縦に分割できます。
import numpy as np
arr = np.arange(8).reshape(2, 4)
arr_hsp = np.hsplit(arr, 2)
print(arr_hsp[0])
出力:
[[0 1]
[4 5]]
横方向(行)に分割
numpy.vsplit()
を使用すると、配列を指定した数で横に分割できます。
import numpy as np
arr = np.arange(8).reshape(2, 4)
arr_vsp = np.vsplit(arr, 2)
print(arr_vsp[1])
出力:
[[4 5 6 7]]
練習問題
以下のコードを実行し、縦横の分割後の結果を確認してみましょう。
import numpy as np
arr = np.arange(36).reshape(6, 6)
# 縦に3分割
hsp_list = np.hsplit(arr, 3)
arr_hsp = hsp_list[1]
# 横に3分割
vsp_list = np.vsplit(arr, 3)
arr_vsp = vsp_list[1]
print("元の配列:")
print(arr)
print("縦分割の2つ目:")
print(arr_hsp)
print("横分割の2つ目:")
print(arr_vsp)
配列の結合
配列を結合することで、異なるデータを1つの配列として扱うことができます。
numpy.concatenate()
を使った結合
異なる配列を結合するには、numpy.concatenate()
を使用します。
import numpy as np
arr1 = np.array([[0, 1, 2], [3, 4, 5]])
arr2 = np.array([[1, 1, 1]])
arr_con = np.concatenate((arr1, arr2))
print(arr_con)
出力:
[[0 1 2]
[3 4 5]
[1 1 1]]
vstack()
と hstack()
を使った結合
numpy.vstack()
を使用すると、配列を縦に結合できます。numpy.hstack()
を使用すると、配列を横に結合できます。
import numpy as np
arr1 = np.array([[0, 1, 2], [3, 4, 5]])
arr2 = np.array([[6, 7, 8]])
print(np.vstack((arr1, arr2)))
出力:
[[0 1 2]
[3 4 5]
[6 7 8]]
import numpy as np
arr1 = np.array([[0, 1], [2, 3]])
arr2 = np.array([[4, 5], [6, 7]])
print(np.hstack((arr1, arr2)))
出力:
[[0 1 4 5]
[2 3 6 7]]
練習問題
以下のコードの実行結果を予測してみましょう。
import numpy as np
arr1 = np.arange(4)
arr2 = np.arange(4).reshape(4, 1)
arr3 = np.arange(8).reshape(4, 2)
arr4 = np.arange(8).reshape(2, 2, 2)
print(np.concatenate([arr2, arr3], axis=1))
まとめ
NumPyを使ったデータの加工方法を学びました。
append()
,insert()
,delete()
を使ったデータの追加・削除hsplit()
,vsplit()
を使ったデータの分割concatenate()
,vstack()
,hstack()
を使ったデータの結合
これらの手法を活用し、実際のデータ処理に挑戦してみましょう!
コメント