Pythonで行列スタックの対数行列式を計算する方法
Pythonで行列のスタック(複数の行列をまとめた配列)に対する対数行列式を計算するには、numpy.linalg.slogdet()メソッドを使用します。第1引数のaは入力配列で、正方行列である必要があります。
このメソッドは、まずsignとして行列式の符号を返します。実数行列の場合、符号は1、0、-1のいずれかです。複素数行列の場合は、絶対値が1の複素数、または0が返されます。
次にlogdetとして、行列式の絶対値の自然対数が返されます。行列式がゼロの場合、signは0になり、logdetは-Inf(負の無限大)になります。いずれの場合も、行列式は sign * np.exp(logdet) と等しくなります。
手順
まず、必要なライブラリをインポートします。
import numpy as np
配列を作成します。
arr = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ])
配列を表示します。
print("Our Array...\n",arr)
次元を確認します。
print("\nDimensions of our Array...\n",arr.ndim)
データ型を取得します。
print("\nDatatype of our Array object...\n",arr.dtype)
形状を取得します。
print("\nShape of our Array object...\n",arr.shape)
線形代数における配列の行列式を求めます。
print("\nDeterminant...\n",np.linalg.det(arr))
行列スタックの対数行列式を計算するには、numpy.linalg.slogdet()メソッドを使用します。行列式がゼロの場合、signは0になり、logdetは-Infになります。いずれの場合も、行列式は sign * np.exp(logdet) と等しくなります。
(sign, logdet) = np.linalg.slogdet(arr)
print("\nResult....\n",(sign, logdet))
サンプルコード
import numpy as np
# 配列を作成
arr = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]]])
# 配列を表示
print("Our Array...\n",arr)
# 次元を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)
# 形状を取得
print("\nShape of our Array object...\n",arr.shape)
# 線形代数における配列の行列式
print("\nDeterminant...\n",np.linalg.det(arr))
# 行列スタックの対数行列式を計算するには、Pythonのnumpy.linalg.slogdet()メソッドを使用
(sign, logdet) = np.linalg.slogdet(arr)
print("\nResult....\n",(sign, logdet))
出力結果
Our Array... [[[1 2] [3 4]] [[1 2] [2 1]] [[1 3] [3 1]]] Dimensions of our Array... 3 Datatype of our Array object... int64 Shape of our Array object... (3, 2, 2) Determinant... [-2. -3. -8.] Result.... (array([-1., -1., -1.]), array([0.69314718, 1.09861229, 2.07944154]))
-
Pythonでカウントソートを実装する方法|サンプルコード付きで解説
この記事では、以下の問題文に対する解決策について詳しく解説します。 問題文 問題: 配列が与えられたとき、カウントソート(Counting Sort)のアルゴリズムを用いて、その配列を昇順に並べ替えます。 カウントソートとは? カウントソートは、あらかじめ決められた範囲内のキーを対象として動作する整列アルゴリズムです。まず、それぞれ異なるキー(値)を持つ要素がいくつあるかを数え上げます。その後、累積和の計算を行うことで、各要素がソート後の配列のどの位置に配置されるべきかを求め、結果を出力します。 この手法は、キーの取り得る範囲が狭い場合に特に有効で、時間計算量は O(n + k)(n は要素数
-
Pythonでアナグラム部分文字列検索プログラムを作成する方法
はじめに この記事では、以下の問題文に対する解決策について学びます。 問題文 − テキストとパターンが与えられたとき、テキスト内に含まれるパターンおよびその順列(アナグラム)の出現位置をすべて出力します。 例えば、テキストが「TUTORIALSPOINT」、パターンが「TOR」であれば、「ROT」や「OTR」といった並べ替えも検索対象となります。 アルゴリズムの考え方 この問題は、スライディングウィンドウ(滑動窓)と文字カウント配列を組み合わせることで効率的に解くことができます。手順は以下のとおりです。 パターン内の各文字の出現回数を、カウント配列 countP に記録します。 テキストの先