工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python NumPyで行列操作:転置、加算、乗算、スライシング – 実践ガイド

Python NumPyで行列操作:転置、加算、乗算、スライシング – 実践ガイド

数学的モデリング、科学計算、データ分析では、二次元データの効率的な操作が頻繁に必要になります。Pythonでは行列をネストしたリストで作成できますが、より強力なのはNumPyライブラリです。このガイドでは最も一般的な行列操作を、明確なコード例とベストプラクティスとともに解説します。

行列とは?

行列は、数値(または他のデータ型)を縦横に配置した長方形の配列です。Pythonコア言語には専用の行列型はありませんが、ネストしたリストまたはNumPyのndarrayで表現できます。後者は高速なベクトル化演算を提供します。

ネストしたリストで行列を作成

ネストしたリストは行列構築の最もシンプルな方法。各内部リストが1行を表します:

# 3x3行列
M1 = [[8, 14, -6],
      [12, 7, 4],
      [-11, 3, 21]]
print(M1)

出力:

[[8, 14, -6], [12, 7, 4], [-11, 3, 21]]

データの読み取り

行と列のインデックスで要素にアクセス。各行の最後の要素を出力:

for row in M1:
    print(row[-1])

出力:

-6
4
21

行列の加算

両行列が同じ形状なら要素ごとの加算は直感的:

M2 = [[3, 16, -6],
      [9, 7, -4],
      [-1, 3, 13]]

# 結果行列
M3 = [[M1[i][j] + M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)

出力:

[[11, 30, -12], [21, 14, 0], [-12, 6, 34]]

要素ごとの乗算

同様に対応する要素を乗算:

M3 = [[M1[i][j] * M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)

出力:

[[24, 224, 36], [108, 49, -16], [11, 9, 273]]

NumPyでの効率的な行列操作

NumPyは専用配列型と豊富なベクトル化操作を提供。pip install numpyでインストールし、npとしてインポート:

import numpy as np

行列の作成

M1 = np.array([[5, -10, 15],
               [3, -6, 9],
               [-4, 8, 12]])
print(M1)

出力:

[[ 5 -10 15]
 [ 3 -6  9]
 [-4  8 12]]

基本操作

例: 行列ドット積

M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
print(M1.dot(M2))

出力:

[[ 93  78]
 [-65 -310]]

スライシング

array[行開始:行終了, 列開始:列終了]で行と列をスライス:

M = np.array([[2, 4, 6, 8, 10],
              [3, 6, 9, -12, -15],
              [4, 8, 12, 16, -20],
              [5, -10, 15, -20, 25]])

print(M[1:3, 1:4])   # 行1-2、列1-3
print(M[:, 3])       # 全行、4列目
print(M[:1, :])      # 1行目、全列
print(M[:3, :2])     # 最初の3行、最初の2列

出力:

[[ 6  9 -12]
 [ 8 12 16]]
[ 8 -12 16 -20]
[[ 2  4  6  8 10]]
[[ 2  4]
 [ 3  6]
 [ 4  8]]

行と列へのアクセス

# 行
print(M[0])    # 最初の行
print(M[-1])   # 最後の行

# 列
print(M[:, 0])   # 最初の列
print(M[:, -1])  # 最後の列

重要なポイント

Python

  1. C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
  2. Python辞書完全ガイド:作成、操作、高度なテクニック
  3. Python print()関数の実践ガイド:基本から応用まで
  4. Python str.count()マスター:文字と部分文字列のカウント実例集
  5. Python format()文字列を明確な例でマスター
  6. Python String.find()メソッド完全ガイド:構文、例、代替手法
  7. Pythonラムダ関数をマスターする:実例とベストプラクティス
  8. Python abs()関数:数値と複素数の絶対値を計算
  9. Python round()関数を実例で徹底解説
  10. Python range()関数をマスター:基礎から応用まで
  11. Python map()関数をマスター:構文、例、ベストプラクティス