Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで行列を操作する方法|NumPyを使った基本演算まとめ

Pythonでは、NumPyモジュールを利用することで、行列に対するさまざまな操作や演算を簡単に実行できます。NumPyは数値計算用の強力なライブラリであり、行列演算のための便利なメソッドが多数用意されています。

主な行列演算メソッド一覧

add() — 2つの行列の対応する要素同士を加算します。

subtract() — 2つの行列の対応する要素同士を減算します。

divide() — 2つの行列の対応する要素同士を除算します。

multiply() — 2つの行列の対応する要素同士を乗算します(要素ごとの積)。

dot() — 行列の掛け算(内積)を実行します。要素ごとの乗算ではなく、数学的な行列積を計算します。

sqrt() — 行列の各要素の平方根を求めます。

sum(x, axis) — 行列内のすべての要素を合計します。第2引数は省略可能で、axis=0 を指定すると列ごとの合計、axis=1 を指定すると行ごとの合計を計算できます。

"T" — 指定した行列の転置行列を求めます。

サンプルコード

import numpy
# 2つの行列を値で初期化
x = numpy.array([[1, 2], [4, 5]])
y = numpy.array([[7, 8], [9, 10]])
# add() で行列の加算
print("2つの行列の加算:")
print(numpy.add(x, y))
# subtract() で行列の減算
print("2つの行列の減算:")
print(numpy.subtract(x, y))
# divide() で行列の除算
print("行列の除算:")
print(numpy.divide(x, y))
# multiply() で要素ごとの乗算
print("2つの行列の乗算(要素ごと):")
print(numpy.multiply(x, y))
# dot() で行列積
print("2つの行列の積(行列積):")
print(numpy.dot(x, y))
# sqrt() で各要素の平方根
print("平方根:")
print(numpy.sqrt(x))
# sum() ですべての要素の合計
print("全要素の合計:")
print(numpy.sum(y))
# 列ごとの合計
print("列ごとの合計:")
print(numpy.sum(y, axis=0))
# 行ごとの合計
print("行ごとの合計:")
print(numpy.sum(y, axis=1))
# "T" で転置行列を取得
print("行列の転置:")
print(x.T)

実行結果

2つの行列の加算:
[[ 8 10]
 [13 15]]
2つの行列の減算:
[[-6 -6]
 [-5 -5]]
行列の除算:
[[0.14285714 0.25      ]
 [0.44444444 0.5       ]]
2つの行列の乗算(要素ごと):
[[ 7 16]
 [36 50]]
2つの行列の積(行列積):
[[25 28]
 [73 82]]
平方根:
[[1.         1.41421356]
 [2.         2.23606798]]
全要素の合計:
34
列ごとの合計:
[16 18]
行ごとの合計:
[15 19]
行列の転置:
[[1 4]
 [2 5]]

multiply() と dot() の違いに注意

初心者がつまずきやすいポイントとして、multiply()dot() の違いがあります。multiply() は同じ位置にある要素同士を掛ける「要素ごとの積(アダマール積)」を計算します。一方、dot() は線形代数でいう「行列積」を計算するため、結果がまったく異なります。機械学習やデータ分析では行列積を使う場面が多いため、両者の違いをしっかり理解しておきましょう。

まとめ

NumPyを使えば、加算・減算・除算・乗算といった基本的な四則演算から、行列積、平方根、合計、転置まで、行列に関するほぼすべての操作を簡潔なコードで実現できます。科学技術計算やデータサイエンスの分野では必須の知識なので、ぜひ実際にコードを動かして挙動を確認してみてください。

  1. Pythonで2つの行列を乗算する方法をわかりやすく解説

    2つの行列の乗算が成立するのは、1つ目の行列の列数と2つ目の行列の行数が一致する場合のみです。この条件を満たしていない行列同士は掛け合わせることができないため、計算前に必ず形状を確認しましょう。ネストしたループによる行列の掛け算Pythonでは、for文を入れ子にする(ネストする)ことで行列の乗算を実装できます。以下のプログラムでは、3行3列の行列XとYを用意し、その積となる結果行列も3×3の構造になります。計算の仕組みとしては、1つ目の行列の各行の要素と、2つ目の行列の対応する列の要素を順番に掛け合わせて合計していきます。サンプルコードX = [[1,2,3], [4,5,6],

  2. Pythonの日付操作モジュールとは?datetimeの基本からdateutilまで解説

    Pythonの日付操作に使える標準モジュール「datetime」とは Pythonには、日付や時刻の解析・フォーマット・演算(加減算)を行うための関数やクラスが含まれた組み込みモジュール「datetime」が用意されています。 時刻はtimeクラスで表現され、「時(hour)」「分(minute)」「秒(second)」「マイクロ秒(microsecond)」の属性を持ちます。さらに、タイムゾーン情報を含めることも可能です。 timeクラスの使用例 import datetime t = datetime.time(1, 2, 3) print(t) print(hour :,