検索ガイド -Search Guide-

単語と単語を空白で区切ることで AND 検索になります。
例: python デコレータ ('python' と 'デコレータ' 両方を含む記事を検索します)
単語の前に '-' を付けることで NOT 検索になります。
例: python -デコレータ ('python' は含むが 'デコレータ' は含まない記事を検索します)
" (ダブルクオート) で語句を囲むことで 完全一致検索になります。
例: "python data" 実装 ('python data' と '実装' 両方を含む記事を検索します。'python data 実装' の検索とは異なります。)
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
>>
python_cookbook

Python Cookbook [Performing Matrix and Linear Algebra Calculations : 行列、線形代数計算の実行] 投稿一覧へ戻る

Published 2020年4月13日19:57 by mootaro23

SUPPORT UKRAINE

- Your indifference to the act of cruelty can thrive rogue nations like Russia -

# Problem:
# 行列の乗算、行列式を求める、一次方程式を解くといった行列および線形代数上の演算を実行したい。

# Solution:
# NumPy ライブラリの matrix オブジェクトを利用します。
# 行列は array オブジェクトと似通っていますが、線形代数学の規則に基づき演算を実行します。

import numpy as np
m = np.matrix([[1, -2, 3], [0, 4, 5], [7, 8, -9]])
m
# matrix([[ 1, -2, 3],
# [ 0, 4, 5],
# [ 7, 8, -9]])

# 転置行列を返します
m.T
# matrix([[ 1, 0, 7],
# [-2, 4, 8],
# [ 3, 5, -9]])

# 逆行列を返します
m.I
# matrix([[ 0.33043478, -0.02608696, 0.09565217],
# [-0.15217391, 0.13043478, 0.02173913],
# [ 0.12173913, 0.09565217, -0.0173913 ]])

# ベクターを定義し乗算を実行します
v = np.matrix([[2], [3], [4]])
v
# matrix([[2],
# [3],
# [4]])
m * v
# matrix([[ 8],
# [32],
# [ 2]])

# numpy.linalg サブパッケージを利用すればより多種の演算を実行できます。
import numpy.linalg

# 行列式を求めます
numpy.linalg.det(m)
# -229.99999999999983

# 固有値を求めます
numpy.linalg.eigvals(m)
# array([-13.11474312, 2.75956154, 6.35518158])

# mx = v における x を求めます
x = numpy.linalg.solve(m, v)
x
# matrix([[0.96521739],
# [0.17391304],
# [0.46086957]])
m * x
# matrix([[2.],
# [3.],
# [4.]])
v
# matrix([[2],
# [3],
# [4]])

# Machine Learning (機械学習) の勉強をしていると好き嫌い、得意苦手にかかわらずどうしても線形代数の知識が多かれ少なかれ必要になってきます。
# Python において行列やベクターの演算を行ううえでの第一の友はやはり NumPy でしょう。
# がんばって勉強するしかありませんね。
この記事に興味のある方は次の記事にも関心を持っているようです...
- People who read this article may also be interested in following articles ... -
Python coding challenge - 主要操作の実行計算時間が全て O(1) のスタックを list を利用して実装しよう!
Python coding challenge - 和が target に等しい2つの要素をより速い実行時間で見つけよう!
【 Effective Python, 2nd Edition 】Queue クラスを利用した producer-consumer パイプライン ( pipelines ) を構築して、マルチスレッドシーケンス処理をエレガントに管理しよう! 並行実行 ( parallelism ) と並列処理 ( concurrency ) もついでにちゃんとイメージしよう!
【 Effective Python, 2nd Edition 】threading モジュールの Lock クラスを利用してマルチスレッド実行時のデータ競合 ( data races ) を予防しよう! GIL はデータ構造 ( data structure ) の安全性まで面倒を見てくれません
【 Effective Python, 2nd Edition 】再帰関数の実行順序をトレースするデコレータを実装しよう - デバック用途にも重宝します!
【Python 雑談・雑学】 Python におけるマルチスレッド実行 (multi threading) について - マルチスレッドで実行すれば何でもかんでも速くなる、と思っていませんか? -
【Python 雑談・雑学】 ユーザー入力に応じて異なる処理関数を実行する際の少し面白い実装方法 - ユーザーの選択項目とそれに応じる関数名をディクショナリで保持する -