(最終更新月: 2025年7月19日)
✓当記事はこんな方におすすめです
「Pythonで行列をどう扱えばいいか悩んでいる」
「Pythonで行列計算や操作のやり方をイチから学びたい」
「実際に動く行列操作のサンプルコードを見て理解したい」
✓当記事で理解できること
- Pythonにおける行列の基礎知識と考え方
- Python標準リストやnumpyによる行列の操作・計算方法
- 実例コードを使った行列の作成・操作・応用テクニック
この記事では、Python未経験者でも理解しやすいよう、「行列」の超基本からnumpyを使った実践的な計算方法まで、一歩ずつ丁寧に解説します。
読み終えるころには、Pythonで行列処理が“怖くなくなる”実感と、すぐに使えるサンプルコードが手に入るはずです。
それでは、一緒に学んでいきましょう。
Pythonと行列の基礎知識
このセクションでは、Pythonで「行列」を扱う上での基本知識を解説します。
なぜなら、数値計算や機械学習の分野で行列は避けて通れず、Pythonを使う際の重要なテーマだからです。
- Pythonで行列を扱う意味とメリット
- 行列計算ライブラリ“numpy”の導入方法
- Pythonとリストによる簡単な行列表現
Pythonで行列を扱う意味とメリット
行列は、数値データや画像処理、AI・データサイエンス分野など、IT技術の“現場”で頻繁に使われる最重要データ形式です。
Pythonはシンプルな文法で直感的に行列を作成・計算できるため、未経験でもチャレンジしやすいのが特徴です。
たとえば画像はピクセルごとの数値=行列ですし、機械学習モデルも内部で行列演算を繰り返します。
現代のITエンジニア・データ分析者にとって、Pythonによる行列操作は「避けて通れない必須スキル」なのです。
行列計算ライブラリ“numpy”の導入方法
Pythonで本格的な行列処理を行うには、numpyという数値計算ライブラリを必ず導入しておくべきです。
numpyは高速かつ柔軟な行列演算・配列操作を実現し、多くの現場コードや教材のサンプル基盤となっています。
インストールはコマンド一行で完了します。
pip install numpy
numpyを使えると「ndarray配列」や便利な演算メソッドの恩恵で、行列処理が一気に実用的になります。
環境構築が苦手な方はPythonのインストール方法も参考にしてください。
Pythonとリストによる簡単な行列表現
Python標準のリスト機能でも、「リストの中にリストを入れる」構造で二次元行列を表現できます。
たとえば次のようなコードです。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix)
リスト型でも行列っぽいデータ操作は可能ですが、計算処理を効率よくしたり、実務的な演算をしたいならnumpy配列がおすすめです。
numpyでできる行列の作成と操作
このセクションでは、numpyを用いた本格的な行列の生成・操作・計算の方法を紹介します。
なぜなら、実践的なアルゴリズムやデータ分析の現場で“便利で速い”行列処理を可能にするからです。
- numpy配列(ndarray)の作成方法
- numpyで行列の要素取得と値の変更
- 行列の和・差・スカラー倍・転置・掛け算のやり方
numpy配列(ndarray)の作成方法
numpyのarray()関数を使うことで、2次元以上の行列データを強力・柔軟に作成できます。
たとえば以下の通りです。
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
matrix()関数でも行列は作れますが、現場や教材のほとんどは今やarray()を採用しています。
なお、Pythonリストの基礎も初心者の方は合わせて押さえておくとよいでしょう。
numpyで行列の要素取得と値の変更
numpy配列では「行, 列」のインデックス指定で要素取得と値変更ができます。
1行2列目の要素取得は次のように書きます。
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
element = matrix[1, 2]
print(element) # 6 が出力される
特定の値の変更例も下記の通りです。
matrix[1, 2] = 10
print(matrix)
このシンプルな書き方が、数値データの加工やデータ変換で役立ちます。
行列の和・差・スカラー倍・転置・掛け算のやり方
numpyでは「+」や「-」「*」など、直感的な演算子やメソッドで行列演算が完結します。
加算・減算・スカラー倍の例を示します。
import numpy as np
m1 = np.array([[1, 2], [3, 4]])
m2 = np.array([[5, 6], [7, 8]])
print(m1 + m2)
print(m1 - m2)
print(m1 * 3) # スカラー倍
転置は「T属性」を使います。
print(m1.T)
行列同士の掛け算はdot()メソッド、matmul()、@演算子などが推奨されています。
print(np.dot(m1, m2))
print(m1 @ m2) # Python3.5以降
演算を使い分けることで、実務や学習時の計算が格段に効率化されます。
実務で使える!特殊な行列計算や応用テクニック
このセクションでは、より発展的な行列処理—ベクトル演算や逆行列・行列式・固有値まで—を現場感のあるサンプル付きで紹介します。
なぜなら、データ処理やAI開発、画像処理現場などで配列演算より一歩踏み込んだ「応用力」が必要だからです。
- ベクトルの内積・行列の内積
- 逆行列・擬似逆行列の計算
- 行列式・固有値・固有ベクトルの求め方
ベクトルの内積・行列の内積
ベクトル同士・行列同士の内積計算はnumpyのdot()や@演算子でシンプルかつ強力に実現できます。
2つのベクトルa、bの積の和(スカラー値)はこう求めます。
import numpy as np
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
print(np.dot(v1, v2)) # 32
複数次元の行列同士の掛け算(内積)は下記のような形です。
m1 = np.array([[1, 2], [3, 4]])
m2 = np.array([[5, 6], [7, 8]])
print(np.dot(m1, m2))
print(m1 @ m2)
逆行列・擬似逆行列の計算
逆行列は、「行列A×逆行列A^{-1}=単位行列」という関係にある行列です。
numpyのlinalg.inv()で逆行列、linalg.pinv()で擬似逆行列が手軽に求められます。
import numpy as np
m = np.array([[1, 2], [3, 4]])
print(np.linalg.inv(m)) # 逆行列
print(np.linalg.pinv(m)) # 擬似逆行列
逆行列が存在しない場合でも、pinv(擬似逆行列)が便利です。
行列計算の基礎となる部分なのでぜひ実際に手を動かしてみてください。
行列式・固有値・固有ベクトルの求め方
行列式(det)や固有値・固有ベクトルは、線形代数やAI・機械学習分野で繰り返し使われます。
numpyを使えば簡単に計算できます。
import numpy as np
m = np.array([[1, 2], [3, 4]])
print(np.linalg.det(m)) # 行列式
values, vectors = np.linalg.eig(m)
print("固有値:", values)
print("固有ベクトル:\n", vectors)
これらのテクニックを身につけておけば、現場で数値処理やデータ分析を任された際の対応力が大幅にアップします。
ndarrayとmatrixの違いと現代Pythonでの推奨スタイル
このセクションでは、numpyの「ndarray」「matrix」—ふたつの行列型の違いと、実務や学習でどちらを使うべきかを整理します。
理由は、最新のPython現場では「迷ったらndarrayを使う」がほぼ定番になっているものの、教材に古いmatrix例も残っているため、初心者が混乱しやすいからです。
- ndarrayとmatrixの違い(操作や演算の仕様)
- どちらを使えばよいか(実務・学習の観点)
- matrix型が非推奨の背景と参考コード
ndarrayとmatrixの違い(操作や演算の仕様)
ndarrayは多次元配列型で「*演算子=要素ごとの積」ですが、matrix型では「*=行列積」と挙動が異なります。
現場の9割以上はndarrayで、matrixは古い教材や一部の数学ライブラリだけです。
import numpy as np
arr = np.array([[1, 2], [3, 4]])
mat = np.matrix([[1, 2], [3, 4]])
print(arr * arr) # 要素ごとの積
print(mat * mat) # 行列積
どちらを使えばよいか(実務・学習の観点)
Pythonの公式・現場の大多数は、ndarrayを標準配列として使うことを推奨しています。
拡張性が高く、3次元・4次元配列や画像処理、機械学習にも柔軟に対応できます。
現代Python現場ではmatrix型の利用が減少傾向です。
「迷ったらndarray」という基本ルールで大丈夫です。
リストとの使い分けやndarrayの活用方法はPythonのShapeとは?も参考にしてください。
matrix型が非推奨の背景と参考コード
matrixは「2次元専用」ですが、numpyの公式では今後非推奨扱い(deprecate)になるとアナウンスされています(参照: NumPy公式ドキュメント)。
古い書籍やコードサンプルで出会う場合、「現代ではndarrayで同じ処理が実現できる」と知っておけば安心です。
import numpy as np
# ndarray(現代の推奨型)
arr = np.array([[1, 2], [3, 4]])
print(arr @ arr)
# matrix(古い型: 非推奨)
mat = np.matrix([[1, 2], [3, 4]])
print(mat * mat)
内積と一次変換の理解を深める
このセクションでは「内積」の意味と、ベクトルを基底ベクトルで変換するイメージを解説します。
数学が苦手な人にも直感的に伝わるよう、図やコード例を踏まえて説明します。
- 行列・ベクトルの内積を求めるサンプル
- 基底ベクトル・一次変換のイメージと内積の本質
- 内積の現実的な活用例
行列・ベクトルの内積を求めるサンプル
内積は「一方向にどれだけ力を加えたか」を数値化するイメージです。
numpyでは次のようにシンプルに書けます。
import numpy as np
v1 = np.array([1, 2])
v2 = np.array([3, 4])
print(np.dot(v1, v2)) # 11
基底ベクトル・一次変換のイメージと内積の本質
内積は「一方のベクトルの方向成分だけもう一方に投影する」計算です。
たとえば「影の長さ=どちらが似ているか」も表せます。
この性質は、検索・機械学習・画像処理などで「どれだけ似ているか」の指標にも応用されます。
一次変換は、ベクトルを「回転」「拡大」「反射」させるイメージで理解できます。
内積の現実的な活用例
たとえば機械学習アルゴリズムで「ユーザーAとBの趣味がどれだけ似ているか(コサイン類似度)」を計算する際にも、ベクトル内積が使われます。
自作アプリや分析の現場でも内積処理は“地味に多用”されるので、ここでしっかりマスターしておきましょう。
また、より複雑なデータ分析や可視化についても知りたい方は、Shape利用の解説やMatplotlibの余白調整方法も参考にしてみてください。
まとめ
本記事では、Pythonで行列を取り扱うための基礎知識から、numpyを用いた実践的な操作方法、現代的な配列型の選択指針、そして現場でも役立つ応用テクニックまで一気通貫で解説しました。
とくに重要なポイントは以下の3つです。
- numpy配列(ndarray)で行列処理をマスターしよう:シンプルかつ高速な演算が身につきます
- matrix型は非推奨、ndarrayを推奨:迷ったらndarrayでOK
- 内積・転置・行列式など、現場でよく使うテクニックも今から実践するのが近道
何度も手を動かしてコードを試し、行列操作の感覚をぜひ体で覚えてみてください。
もし「Pythonの基本をもっと徹底的に学び直したい!」と感じた方は、スッキリわかるPython入門 第2版や独習Python 第2版といった入門書もおすすめです。
現場レベルのデータ分析・アプリ開発に挑戦したいなら、DigitalOceanのクラウド環境や、MySQL連携など開発技術にもぜひ触れてみてください。
Pythonを味方につけて、ITキャリアのステージを一緒に上げていきましょう!