Pythonでデータ分析や機械学習、画像処理を始めようとすると、必ず登場するのが NumPy(ナンパイ) です。NumPyは「高速な数値計算」と「多次元配列の操作」を得意とするライブラリで、機械学習や科学計算、データ分析の現場でほぼ必須のツールになっています。
NumPyを使いこなせるようになると、何千・何万件ものデータを一気に計算できたり、画像加工や統計処理がシンプルなコードで書けるようになります。今回は動画の内容をベースに、NumPyの基本から配列演算、変形・結合、便利な関数までをまとめて整理しました。✨
NumPyは、数学で使われるような関数や高次元の配列をPythonから簡単に扱えるようにしてくれるライブラリです。機械学習・科学計算・データ分析の分野では、ほぼ標準のように使われます。
使うには事前にインストールが必要です。pip install numpy でインストールしたら、コードの先頭で次のように書くのが慣習になっています。
import numpy as np
np という別名でインポートするのがお作法。NumPyの記事やサンプルコードを見ると、ほぼすべてがこの形になっています。
NumPyの中心にあるのが ndarray(n-dimensional array) と呼ばれる独自の配列オブジェクトです。Python標準のリストと似ていますが、できることや動きが大きく異なります。
たとえば1次元配列を作るときは、np.array([10, 14, 19]) のようにリストを渡します。一見Pythonのリストと同じに見えますが、決定的な違いは配列同士の演算や行列計算が直感的にできること。
[10, 14, 19] * 2 はリストが2回繰り返された [10,14,19,10,14,19] になる。x * 2 はすべての要素に2をかけて [20, 28, 38] になる。大量データを一気に高速に計算できるため、機械学習や画像処理で重宝されるわけです。⚡
ndarrayは1次元だけでなく、2次元・3次元と高次元の配列も自然に扱えます。2次元配列は「行と列」、3次元配列は「行・列+もう一軸」のイメージです。
身近な例だとカラー画像。1ピクセルごとにRGB(赤・緑・青)の値があり、それが縦横に並んでいるので3次元配列として表現できます。だから画像加工とNumPyは相性抜群なのです。📷
作った配列がどんな形をしているのかは、ndarrayの属性から簡単に確認できます。
(2, 3))。「配列の形が分からない…」となったら、まずこの2つを表示してみると一発で構造がつかめます。
NumPyには、用途に応じて配列を作る関数がいくつも用意されています。
x + 10 や x * 3 のように、配列に対して数値で計算すると、すべての要素にその演算が一気に適用されます。Pythonリストでは map などを使う必要がある処理が、NumPyならたった1行です。
同じ形の配列同士なら、同じ位置にある要素同士で計算が行われます。たとえば2行3列の配列を2つ用意して足し算すると、それぞれの位置で要素同士の和が計算された配列が返ってきます。
形が異なる配列でも、特定の条件(ブロードキャスト可能な形)であれば計算できます。1次元配列と2次元配列、N行1列の配列と多次元配列など、ルールを覚えると一気に応用が利きます。
普通の * はあくまで「同じ位置の要素同士の掛け算」。数学でいう行列の積(内積)を計算したい場合は np.dot(x, y) を使います。1つ目の配列の列数と、2つ目の配列の行数が一致している必要がある、というルールも押さえておきましょう。
reshape を使うと、要素はそのままで配列の形を変えられます。たとえば2行3列を3行2列に変形したり、3次元を2次元に潰したり。flatten を使えば、どんな形の配列も一気に1次元配列に変換できます。
ただし、変形後の総要素数は変える前と同じである必要があります。ここを間違えるとエラーになるので注意です。⚠️
2つ以上の配列をつなげるには np.concatenate が便利。第1引数に配列のリスト、第2引数に「どの軸で結合するか」を指定します。
配列の要素にアクセスするときは、Pythonのリストと同様に角括弧を使います。多次元配列の場合は x[行, 列] のようにカンマ区切りで指定。x[0, :] のようにコロンを使えば「その次元すべて」を意味し、行や列を一気に取り出せます。
NumPyには、データ分析や数学計算で頻出の関数がそろっています。引数にリストやndarrayを渡すだけで、複雑な処理がワンライナーで終わります。
すべて暗記する必要はありません。「こういう統計値や数学関数はだいたい揃っている」と知っておくだけで、必要なときに調べて使える力になります。🔍
動画やブログで触りはつかめても、機械学習・データ分析の現場で使いこなすには、書籍で体系的に学ぶのが一番の近道です。NumPyだけでなく、Pandasや機械学習との組み合わせまで一気に押さえれば、プロジェクトでそのまま戦力になります。📈
NumPyとPandasを軸に、データの読み込み・前処理・可視化・分析までを網羅。NumPyの作者自身が著者という、現場で長く愛されている定番書です。
NumPyの行列演算がなぜ機械学習で重要なのかを、scikit-learnの実装と一緒に学べる一冊。配列計算が「実際にどう使われるか」が腹落ちします。
NumPyだけで実装しながらニューラルネットワークの仕組みを学ぶ名著。配列計算と行列の積が「なぜ必要か」を、手を動かしながら体感できます。
NumPy・SciPyを使った科学計算をしっかり学びたい人向け。シミュレーションや高度な数値解析にも踏み込めるようになります。
NumPyを学ぶ前段階として、Pythonの文法・関数・クラス設計を整えておきたい人にぴったり。基礎がしっかりしていると、ライブラリの理解スピードが段違いです。
大量の数値データを扱う・行列計算をしたい場合はNumPyが圧倒的に高速で便利です。一方、要素数が少なく、種類の異なるデータをまとめたいだけならPython標準のリストで十分です。用途に応じて使い分けましょう。
代表例はカラー画像です。縦×横の各ピクセルにRGBの3つの値があるため、自然に3次元配列として表現されます。画像処理や畳み込みニューラルネットワーク(CNN)でよく登場します。
* は同じ位置の要素同士を掛け算する「アダマール積」。np.dot は数学の行列の積(内積)を計算します。次元やサイズの条件、結果の形が異なるので、目的に応じて使い分ける必要があります。
大丈夫です。最初は「配列まるごとに対して計算ができる便利なやつ」くらいの理解でOK。機械学習や統計を本格的にやる段階で、必要な数学だけ書籍で補強していけば十分追いつけます。
覚える必要はありません。np.max np.mean np.std といったよく使うものだけ把握しておき、「こういう処理あったはず」と思ったときに公式ドキュメントを検索するスタイルで十分です。実務でもみんなそうしています。
NumPyは、Pythonで数値計算・データ分析・機械学習・画像処理をやるうえで避けて通れないライブラリです。ndarrayの作り方、配列の形の確認、四則演算と行列の積、変形と結合、便利関数。この5つを押さえれば、ほとんどのライブラリのチュートリアルがスラスラ読めるようになります。📚
単体で使うというより、Pandasやscikit-learn、PyTorchなどと組み合わせて使う場面がほとんど。今回紹介した書籍を相棒に、ぜひあなたのデータ活用スキルをひとつ上のステージに引き上げてください。🚀