Python初心者必見!NumPyを使ったデータ加工の完全ガイド

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。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() を使ったデータの結合

これらの手法を活用し、実際のデータ処理に挑戦してみましょう!

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

コメント

コメントする

CAPTCHA


目次