データサイエンスの必須アイテム!機械学習で使い倒すNumPy関数ベスト10

こんにちは。ゆうせいです。

データサイエンスの必須アイテム!機械学習で使い倒すNumPy関数ベスト10

NumPyは機械学習の心臓部

機械学習の世界へ足を踏み入れたみなさん、行列という言葉を聞いて身構えてしまっていませんか?機械学習の実体は、膨大な数のデータを並べた表や行列の計算です。

その計算を、まるで電卓を叩くような手軽さで、しかも超高速に処理してくれるライブラリがNumPy(ナンパイ)です。NumPyを使いこなせるようになると、数千個、数万個のデータを一瞬で書き換えたり、計算したりできるようになります。

みなさんは、大量の書類を一枚ずつ手で計算するのと、魔法の杖を振って一気に終わらせるの、どちらが魅力的だと感じますか?NumPyはその魔法の杖そのものです!

専門用語の解説

ここで、配列(アレイ)という言葉を覚えましょう。

高校の数学で「ベクトル」や「行列」を習いましたよね。配列とは、数字が規則正しく並んだ箱のようなものです。1列に並んでいれば1次元配列(ベクトル)、縦横の表になっていれば2次元配列(行列)と呼びます。

機械学習では、画像データも音声データも、すべてはこの配列という数字の集まりとして扱われます。


NumPy関数ランキング

機械学習のコードを書く際に、これを知らないと始まらないという関数を厳選してランキングにしました。

第1位:np.array()

すべての始まりとなる関数です。

  • 役割Pythonのリスト形式のデータを、NumPy専用の高速な配列に変換します。
  • 例え普通のノート(リスト)を、計算専用のスーパーコンピュータのメモリ(配列)に書き写す作業です。
# 1. np.array()
import numpy as np

data = [1, 2, 3, 4, 5]
arr = np.array(data)
print(arr)

第2位:np.reshape()

データの形を自由自在に変幻自在に変える関数です。

  • 役割データの個数は変えずに、縦横の形だけを変更します。
  • 例え100個の卵が横一列に並んでいるのを、 10 \times 10 のパックに詰め直すようなイメージです。
# 2. np.reshape()
import numpy as np

arr = np.arange(1, 13)
reshaped = arr.reshape(3, 4)
print(reshaped)

第3位:np.dot() / np.matmul()

機械学習の計算のメインディッシュです。

  • 役割行列同士の掛け算(内積)を行います。
  • 例え「商品の単価リスト」と「売れた個数リスト」を掛け合わせて、一気に合計金額を出すような、複雑な計算を一瞬で終わらせます。
# 3. np.dot()
import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.dot(a, b)
print(result)

第4位:np.arange() / np.linspace()

規則正しい数字の列を自動で作ってくれる関数です。

  • 役割0 から 100 まで 1 刻みの数字など、連続したデータを作成します。
  • 例えグラフを描くための目盛りを、定規を使わずに一瞬で等間隔に引いてくれる道具です。
# 4. np.arange() / np.linspace()
import numpy as np

a = np.arange(0, 10, 2)
b = np.linspace(0, 1, 5)
print(a)
print(b)

第5位:np.zeros() / np.ones()

「空の状態」や「初期状態」を作る関数です。

  • 役割中身がすべて 0 、あるいはすべて 1 の配列を作ります。
  • 例えこれから計算結果を書き込むための、真っ白なキャンバスや、すべてにチェックが入った名簿を用意する作業です。
# 5. np.zeros() / np.ones()
import numpy as np

zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
print(zeros)
print(ones)

第6位:np.mean() / np.std()

データの全体像を把握するための統計関数です。

  • 役割平均値や標準偏差(データのばらつき)を計算します。
  • 例えクラス全員のテストの点数から、平均点や「どれくらい点数が散らばっているか」を瞬時に割り出します。
# 6. np.mean() / np.std()
import numpy as np

data = np.array([10, 20, 30, 40, 50])
mean = np.mean(data)
std = np.std(data)
print(mean)
print(std)

第7位:np.argmax()

「一番すごいのはどれ?」を見つける関数です。

  • 役割配列の中で最も大きい値が入っている場所(インデックス)を返します。(一番大きい値そのものを返すのはnp.max())
  • 例えAIが画像を見て「猫である確率 80 % 、犬である確率 10 % 」と出したとき、一番高い 80 % が何番目にあるかを教えてくれます。
# 7. np.argmax()
import numpy as np

scores = np.array([0.1, 0.8, 0.05, 0.05])
index = np.argmax(scores)
print(index)

第8位:np.transpose() / .T

行列をパタンとひっくり返す関数です。

  • 役割縦と横(行と列)を入れ替えます。
  • 例えスマートフォンの画面を縦持ちから横持ちに回転させるように、データの向きを計算しやすい方向に変えます。
# 8. np.transpose() / .T
import numpy as np

matrix = np.array([[1, 2, 3], [4, 5, 6]])
transposed = matrix.T
print(transposed)

第9位:np.sum()

合計を出す、シンプルながら強力な関数です。

  • 役割配列の中の数値をすべて、あるいは特定の方向(縦だけ、横だけ)に足し合わせます。
  • 例えスーパーのレジで、カゴに入れた商品の合計金額を計算するスピードスターです。
# 9. np.sum()
import numpy as np

matrix = np.array([[1, 2, 3], [4, 5, 6]])
total = np.sum(matrix)
col_sum = np.sum(matrix, axis=0)
print(total)
print(col_sum)

第10位:np.random.rand()

偶然を作り出す関数です。

  • 役割0 から 1 までのランダムな数字(乱数)を生成します。
  • 例えサイコロを振って、AIの学習を始めるための「最初の手がかり」をバラバラにばらまく役割です。
# 10. np.random.rand()
import numpy as np

random_matrix = np.random.rand(5, 5)
print(random_matrix)

比較表

代表的な関数の用途をまとめました。

関数名用途覚えるべきポイント
np.array配列の作成全ての基本!
np.reshape形状変換画像処理で多用する
np.dot行列演算ニューラルネットワークの核
np.mean統計計算データの傾向を掴む
np.argmax分類結果の取得最終的な判断に使う

NumPyをマスターする指針

今回紹介した10個の関数は、機械学習のプログラムの中で何度も、それこそ呼吸をするように登場します。

まずは、自分のパソコンでPythonを立ち上げて、 5 \times 5 のランダムな行列を作ってみることから始めてみませんか?数字が整然と並ぶ様子を見るだけでも、AIエンジニアに一歩近づいた気分になれるはずです。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。