【2026年8月最新】Python行列(NumPy)完全ガイド|作成・形状変換・計算から画像データ処理まで
この記事の内容
「データ分析の勉強を始めたら行列という言葉が出てきたけど、正直よく分からない」「画像処理やAIの解説記事に必ず出てくる行列を、Pythonでどう扱えばいいのか知りたい」——そんな疑問を持ってこの記事にたどり着いた方は多いのではないでしょうか。
Pythonで行列を扱う際、実務では標準のリスト型ではなくNumPyという数値計算ライブラリを使うのが一般的です。NumPyのndarray(多次元配列)を使うと、行列の作成・変形・計算までをシンプルなコードで高速に処理できます。
この記事では、Pythonでの行列の基本的な作り方から、形状変換・転置、四則演算、そして画像データを行列として扱う実践的な使い方までをサンプルコード付きで体系的に解説します。さらに記事の最後では、Claude CodeというAIツールを使ってこうした行列処理コードを自動生成する方法もご紹介します。
この記事を最後まで読むと、次の6つが明確になります。
01 MATRIX BASICS Pythonの行列とは――基礎と用途 数値を格子状に並べたデータ構造とその使われ方
行列とは、数値を縦(行)と横(列)の格子状に並べたデータのことです。エクセルの表をイメージすると分かりやすく、行列の各マス目には数値が1つずつ入り、「何行目・何列目に何の値があるか」という位置関係を持って管理されます。
📚 用語解説
行列(Matrix):数値を縦・横に規則正しく並べたデータ構造。数学的には「m行n列の行列」のように表現され、例えば3行2列の行列なら、3×2=6個の数値が格子状に並んでいます。画像・音声・売上表など、多くの現実のデータは行列(またはさらに次元を拡張した「テンソル」)として表現できます。
📚 用語解説
NumPy:Pythonで数値計算を高速に行うための代表的なライブラリ。多次元配列を扱うためのndarrayという型を提供しており、行列計算・統計処理・線形代数の演算を、標準のリストより大幅に高速かつ簡潔なコードで実行できます。データ分析・機械学習・画像処理の分野で事実上の標準ライブラリです。
行列がどんな場面で使われているか、具体例を見てみましょう。
| 用途 | 行列としての扱われ方 | 主な利用シーン |
|---|---|---|
| 画像データ | 各ピクセルの色(明るさ)を数値として並べた行列 | 画像処理・AI画像認識 |
| 売上・在庫データ | 「商品×月」のように2軸で数値を整理した表 | データ分析・レポート作成 |
| 機械学習の入力データ | 複数のデータ・複数の特徴量を並べた行列 | AIモデルの学習・予測 |
| 音声データ | 時間ごとの波形を数値化して並べたもの | 音声認識・音声合成 |
| 座標変換(CG・ゲーム) | 回転・拡大縮小を行列の掛け算で表現 | グラフィック処理・ゲーム開発 |
1-1. リストと行列の違い
Pythonには元々「リスト」というデータ構造がありますが、行列(多次元配列)を効率よく扱うためにはNumPyのndarrayを使うのが実務では基本です。両者の違いを整理しておきましょう。
| 比較軸 | 標準のリスト(list) | NumPy配列(ndarray) |
|---|---|---|
| 計算速度 | △ 要素数が増えると遅くなりやすい | ◎ 内部でC言語実装されており高速 |
| 四則演算の書きやすさ | △ ループで1要素ずつ処理が必要 | ◎ 配列全体に対して直接演算できる |
| 多次元データの扱い | △ リストのリストで表現、操作が煩雑 | ◎ shape/reshape等の専用機能が豊富 |
| メモリ効率 | △ 各要素がバラバラに管理される | ◎ 連続したメモリ領域にまとめて格納 |
| 画像・機械学習ライブラリとの連携 | △ 変換が必要な場合が多い | ◎ そのまま渡せることが多い |
数値の集まりを2次元・3次元で扱いたい場面(表形式データ・画像・センサーデータなど)では、基本的にリストではなくNumPyのndarrayを使うと考えて問題ありません。実務のPythonコードのほとんどがこの前提で書かれています。
1-2. NumPyのインストールと読み込み
NumPyは標準ライブラリには含まれないため、事前にインストールが必要です。
Google Colab(ブラウザ上で動くPython実行環境)を使う場合、NumPyは最初から使える状態で用意されています。ローカル環境の構築に不安がある方は、Colabから試すのが最も手軽です。
02 CREATING MATRICES 行列の作成方法(リストとNumPyの違い) ネストしたリストからNumPy配列への変換方法を理解する
Pythonで行列を作る方法は大きく2通りあります。標準のリストを入れ子にする方法と、NumPyの機能を使う方法です。
2-1. リストで行列(風のデータ)を作る
リストのリスト(ネストしたリスト)を使うと、見た目上は行列のようなデータを作れます。ただしこれは本物の「行列型」ではなく、あくまでリストがリストを要素として持っているだけです。
2-2. NumPyのarray()関数で行列を作る
np.array()関数にネストしたリストを渡すと、NumPyのndarray(多次元配列)に変換されます。ここから先の計算はすべてこのndarrayに対して行うのが基本です。
📚 用語解説
ndarray(N-dimensional array):NumPyが提供する多次元配列専用のデータ型。「N次元配列」の略で、1次元(ベクトル)・2次元(行列)・3次元以上(テンソル)まで統一的に扱えます。Pythonの標準リストと違い、同じ型のデータを効率よくまとめて計算できるよう設計されています。
2-3. 特殊な行列を一発で作る便利関数
NumPyには、よく使う特定の形の行列を1行で生成できる便利な関数が用意されています。
| 関数 | 生成される行列 | コード例 |
|---|---|---|
| np.zeros((行,列)) | すべての要素が0の行列 | np.zeros((2, 3)) |
| np.ones((行,列)) | すべての要素が1の行列 | np.ones((2, 3)) |
| np.eye(n) | n×nの単位行列(対角線上が1、他は0) | np.eye(3) |
| np.arange(n).reshape(行,列) | 連番の数値を指定の形に並べた行列 | np.arange(6).reshape(2, 3) |
| np.random.rand(行,列) | 0〜1のランダムな値の行列 | np.random.rand(2, 3) |
03 BASIC OPERATIONS 行列操作の基本(形状確認・reshape・転置) 行列の「かたち」を確認・変更する基本操作を身につける
行列を扱う上でまず身につけるべきは、「今この行列がどんな形をしているか」を確認し、必要に応じて形を変える操作です。
3-1. shape属性で行列の形状を確認する
.shapeは、行列が「何行×何列」で構成されているかをタプル(数値の組)で返す属性です。
3-2. size属性で要素の総数を確認する
📚 用語解説
属性(Attribute)とメソッド(Method):shapeやsizeのように、値をそのまま取得できるものを「属性」と呼び、reshape()やmax()のようにカッコを付けて実行するものを「メソッド」と呼びます。属性にはカッコを付けない点が、初学者がつまずきやすいポイントです。
3-3. reshape()で行列の形を変換する
reshape()メソッドを使うと、要素の総数を変えずに行列の形(行数×列数)を変更できます。変換前後で要素の総数が一致している必要があります。
6個の要素を持つ配列を(2, 4)のような形にreshapeしようとすると「cannot reshape array of size 6 into shape (2,4)」というエラーが出ます。変換前後で「行数×列数=要素の総数」が一致していることを必ず確認してください。
3-4. T属性で行列を転置する
転置とは、行と列を入れ替える操作です。NumPyでは.Tという属性を使うだけで転置できます。
📚 用語解説
転置(Transpose):行列の行と列を入れ替える操作。m行n列の行列を転置すると、n行m列の行列になります。数学の行列計算だけでなく、データの向き(縦持ち・横持ち)を変換したいときにもよく使われます。
04 MATRIX CALCULATIONS 行列計算(足し算・引き算・掛け算・割り算) 「要素ごとの計算」と「行列積」の違いを正確に理解する
NumPyの行列計算で最も間違えやすいのが、「要素ごとの計算」と「行列としての掛け算(行列積)」の違いです。ここを正しく理解しておくことが、この章で最も重要なポイントです。
4-1. 足し算・引き算(要素ごとの計算)
同じ形(shape)を持つ行列同士は、+や-で直感的に計算できます。同じ位置にある要素同士が計算されます。
4-2. 【重要】掛け算には2種類ある
NumPy配列同士を*で計算すると、数学的な「行列の積(行列積)」ではなく、同じ位置の要素同士をそれぞれ掛け算する結果になります。行列としての正しい掛け算をしたい場合は、後述するnp.dot()または@演算子を使う必要があります。
📚 用語解説
行列積(Matrix Product):数学的に定義された「行列同士の正しい掛け算」。1つ目の行列の各行と、2つ目の行列の各列の要素同士を掛けて合計する、という規則で計算されます。NumPyではnp.dot()または@演算子を使います。要素ごとの単純な掛け算(アダマール積)とは全く異なる結果になるため、混同しないよう注意が必要です。
| 書き方 | 意味 | 計算方法 |
|---|---|---|
| a * b | 要素ごとの掛け算(アダマール積) | 同じ位置の値をそのまま掛け算 |
| np.dot(a, b) | 行列積(線形代数の正しい掛け算) | 行と列の内積を計算 |
| a @ b | np.dot(a, b)と同じ(読みやすい記法) | 行と列の内積を計算 |
4-3. 割り算(要素ごとの除算)
行列積(np.dot / @)が成立するには「1つ目の行列の列数」と「2つ目の行列の行数」が一致している必要があります。一致していない場合は「shapes not aligned」というエラーが出るので、まずshapeを確認してください。
05 IMAGE AS MATRIX 画像データをNumPy行列として扱う実践編 画像処理・AI分野で行列が使われる理由を実例で理解する
行列の代表的な実務活用例が画像データの処理です。デジタル画像は、実は内部的に「数値が並んだ行列(正確には3次元配列)」として扱われています。
5-1. なぜ画像データを行列で扱うのか
画像は無数の小さな点(ピクセル)の集まりでできており、各ピクセルは色の情報を数値(0〜255)で持っています。この「縦横に並んだ数値」がまさに行列そのものです。カラー画像の場合は、赤(R)・緑(G)・青(B)の3チャンネル分のデータが重なった3次元配列になります。
| 画像の種類 | データの形(shape) | 意味 |
|---|---|---|
| グレースケール画像 | (高さ, 幅) | 各ピクセルが明るさ1つの値(0〜255)を持つ2次元行列 |
| カラー画像(RGB) | (高さ, 幅, 3) | 各ピクセルがR・G・Bの3つの値を持つ3次元配列 |
📚 用語解説
ピクセル(Pixel):デジタル画像を構成する最小単位の点。1枚の画像は縦×横のピクセルの集まりであり、各ピクセルが色や明るさの情報を数値で持っています。「Picture Element」の略で、画像を行列として扱う際の1マスに相当します。
5-2. Pillowで画像を読み込みNumPy配列に変換する
画像処理でよく使われるPillow(PIL)ライブラリで画像を読み込み、np.array()に渡すだけで、画像データをNumPy行列として扱えるようになります。
5-3. 行列演算で簡単な画像処理をしてみる
画像がNumPy配列になれば、これまで解説した行列計算のテクニックがそのまま画像処理に使えます。例えば、明るさを一律で変える処理は「全要素に数値を足す・掛ける」だけで実現できます。
画像データはuint8型(0〜255の整数)で表現されるため、計算結果がこの範囲を超えると色化けの原因になります。np.clip(値, 最小, 最大)で範囲を強制的に収めてから型を戻すのが安全な書き方です。
06 BUSINESS USE CASES 業務でよく使うNumPy行列活用パターン集 現場のデータ処理でそのまま使える実装例
ここでは、業務データ処理の現場でよく使われるNumPy行列の活用パターンを紹介します。
6-1. 複数店舗×複数月の売上データを集計する
📚 用語解説
axis(軸):NumPyで多次元配列の「どの方向に処理するか」を指定するパラメータ。2次元配列ではaxis=0が縦方向(列ごと)、axis=1が横方向(行ごと)の集計を意味します。この向きの感覚は初学者が混乱しやすいポイントなので、実際に小さいデータで試して確認するのが確実です。
6-2. 条件に合うデータだけを抽出する
6-3. 統計値(平均・最大・最小)を一括で求める
データを
リスト・CSVで
用意する
np.array()で
NumPy行列に
変換する
shape/reshape
で形を整える
計算・集計
(sum/mean等)
を実行する
07 CLAUDE CODE FOR NUMPY Claude CodeでPython行列コードを自動生成する方法 構文を覚えなくても日本語の指示だけでコードが完成する
ここまでNumPyの行列コードを手書きする方法を解説してきましたが、実はClaude CodeというAIツールを使えば、こうした行列処理のコードを日本語で指示するだけで自動生成できます。「Pythonを書いたことがない」「shapeやreshapeの使い方を覚えるのが大変」という方でも、Claude Codeなら業務に必要な集計・処理コードをすぐに手に入れられます。
弊社(株式会社GENAI)でも、社内のデータ集計・分析処理にClaude Codeを活用しており、複数店舗のクロス集計や画像の一括加工などを、エンジニアでない担当者が短時間で実行できる体制を作っています。
📚 用語解説
Claude Code(AI業務自動化ツール):Anthropic社が提供するAIエージェントツール。日本語の指示に従って、プログラムコードの生成・修正・実行まで自律的に行います。「このCSVを読み込んで店舗ごとの売上合計を出して」のように話しかけるだけで、NumPyやpandasを使ったPythonコードを自動生成し、実行結果まで返してくれます。
7-1. Claude Codeへの指示例
NumPyを使って以下を計算するPythonコードを作ってください。
・各店舗の合計売上
・各月の合計売上
・全体の平均売上
・売上が100万円を下回った店舗×月の組み合わせをリストアップ
このような自然言語の指示をClaude Codeに出すと、CSVの読み込みからNumPy配列への変換、集計・条件抽出までを含んだ実行可能なコードを自動生成し、その場で実行して結果まで見せてくれます。
日本語で指示
「店舗ごとの
合計を出して」
Pythonコード生成
NumPy/pandas
を使ったコード
実行・結果確認
数値・グラフを
その場で出力
継続依頼
「グラフにして」
「上位5件は?」
7-2. Claude Codeで自動化できるデータ処理の例
| やりたいこと | Claude Codeへの指示例 | 削減効果(目安) |
|---|---|---|
| 複数シートのクロス集計 | 「この売上表を店舗別・月別に集計して、グラフも作って」 | 3時間→15分 |
| 画像の一括リサイズ・加工 | 「このフォルダの画像を全部同じサイズに揃えて明るさを調整して」 | 2時間→10分 |
| アンケートデータの統計処理 | 「このアンケート結果の平均・標準偏差・分布を出して」 | 1.5時間→10分 |
| 異常値の検出 | 「このデータから明らかにおかしい数値を見つけてリストにして」 | 2時間→15分 |
| 機械学習用データの前処理 | 「このデータをモデルに入力できる形に正規化して」 | 3時間→20分 |
弊社GENAIでは、Claude Max 20xプラン(月額$200・約30,000円)を契約して、こうしたデータ処理・分析業務を日常的にClaude Codeへ任せています。「Pythonが書ける専任担当者がいない」という体制でも、業務に必要な集計・分析がその場で完結するようになった実感があります。
08 CONCLUSION まとめ NumPyの行列知識とClaude Codeでデータ処理を両立させる
この記事では、Pythonでの行列の扱い方について、NumPyを使った基礎から画像処理・業務活用パターンまでを体系的に解説しました。最後にポイントをまとめます。
np.array()でリストからNumPy行列に変換できる。np.zeros()等の便利関数も活用できるshapeで形状確認、reshape()で形の変換、.Tで転置ができるsum()・mean()で、業務のクロス集計データを高速に処理できる行列やNumPyは、最初は専門用語の多さに戸惑うかもしれませんが、「数値を縦横に並べたデータをまとめて計算するための道具」という本質さえ掴めば、恐れる必要はありません。この記事で紹介したコードを実際に動かしながら、少しずつ感覚を掴んでいくことをおすすめします。
データ集計・分析処理をClaude Codeで効率化したい方へ
NumPyを使った集計処理から、画像データの一括加工・業務データの分析基盤構築まで、Claude Codeを使った開発の設計を弊社AI鬼管理がご支援します。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. NumPyを使わずに標準のリストだけで行列計算はできませんか?
A. できますが、for文でループを回して1要素ずつ計算する必要があり、コード量が増え処理速度も遅くなります。データ量が少ない学習用途なら問題ありませんが、実務で扱うような数百〜数万件のデータではNumPyの利用を強く推奨します。
Q. 「*」で行列を掛けたら期待した結果と違いました。なぜですか?
A. NumPyの「*」は要素ごとの掛け算(アダマール積)であり、数学的な「行列の掛け算(行列積)」ではありません。行列積を計算したい場合はnp.dot(a, b)または a @ b を使ってください。
Q. reshape()でエラーが出ます。原因は何ですか?
A. 最も多い原因は「変換前後で要素の総数が一致していない」ことです。例えば要素数6の配列を(2, 4)のような形(要素数8が必要)にreshapeしようとするとエラーになります。matrix.sizeで現在の要素数を確認し、行数×列数が一致する形を指定してください。
Q. 行列の次元数(2次元・3次元)はどう見分ければいいですか?
A. .ndim属性で確認できます。2次元行列ならndim=2、カラー画像のような3次元配列ならndim=3が返ります。.shapeで確認できるタプルの要素数と一致するので、両方を確認する習慣をつけると安心です。
Q. pandasのDataFrameとNumPyのndarrayはどう使い分ければいいですか?
A. 列名やラベル付きでデータを扱いたい場合(Excelの表のようなイメージ)はpandasのDataFrameが便利です。一方、純粋な数値計算・行列演算を高速に行いたい場合はNumPyのndarrayが適しています。実務ではdf.valuesやnp.array(df)でDataFrameからNumPy配列に変換して計算することもよくあります。
Q. 画像データをNumPyで扱う際、色の値の範囲はどうなっていますか?
A. 一般的なJPEG/PNG画像は各色チャンネルが0〜255の整数(uint8型)で表現されます。機械学習モデルに入力する際は、この値を0〜1の範囲に変換する「正規化」という前処理を行うのが一般的です(値を255で割るだけの単純な処理です)。
Q. Pythonの行列処理コードをClaude Codeで生成する場合、環境構築の知識は必要ですか?
A. 基本的な知識がなくても始められます。「このデータを集計して」と伝えるだけで、Claude Codeが必要なライブラリのインストール手順やコードの実行まで案内・実行してくれます。ただし社内のPCにPython実行環境がない場合は、事前に軽くセットアップの相談をしておくとスムーズです。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




