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

Pythonで4次元配列の逆を取得する方法【numpy.linalg.tensorinv()の使い方】

Pythonで4次元配列の逆(テンソルの逆行列)を計算するには、numpy.linalg.tensorinv()メソッドを使用します。このメソッドの戻り値は、tensordot演算 tensordot(a, b, ind) に対する「逆」となるテンソルです。つまり、浮動小数点精度の範囲内で tensordot(tensorinv(a), a, ind) は、tensordot演算における「単位テンソル」として機能します。

メソッドは a の tensordot 逆を返し、その形状は a.shape[ind:] + a.shape[:ind] となります。

主なパラメータ

  • a(第1引数):「逆」を求める対象のテンソル。形状は「正方」である必要があります。つまり、prod(a.shape[:ind]) == prod(a.shape[ind:]) を満たす必要があります。
  • ind(第2引数):逆和に関与する先頭インデックスの数。正の整数を指定する必要があり、デフォルト値は 2 です。

実行手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy.linalg import inv

次に配列を作成します。numpy.eye() は、対角成分が1でそれ以外が0の2次元配列を返します。

arr = np.eye(4*6)

作成した配列の形状を変更します。

arr.shape = (4, 6, 8, 3)

配列を表示します。

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)

4次元配列の逆を計算するために、numpy.linalg.tensorinv() メソッドを使用します。

print("\nResult...\n",np.linalg.tensorinv(arr))

コード例全体

import numpy as np
from numpy.linalg import inv

# 配列を作成
# numpy.eye() は対角成分が1、それ以外が0の2次元配列を返します
arr = np.eye(4*6)

# 作成した配列の形状を変更
arr.shape = (4, 6, 8, 3)

# 配列を表示
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)

# 4次元配列の逆を計算するために numpy.linalg.tensorinv() を使用
print("\nResult...\n",np.linalg.tensorinv(arr))

出力結果

※出力は非常に長いため、ここでは主要な部分を抜粋して示します。

Our Array...
    [[[[1. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]
   [0. 0. 0.]]]

   ...(中略:対角成分に1が配置された単位テンソル構造)...

Dimensions of our Array...
4

Datatype of our Array object...
float64

Shape of our Array object...
(4, 6, 8, 3)

Result...
    [[[[1. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 0.]]]

   ...(中略)...

   [[[0. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 0.]
   [0. 0. 0. 0. 0. 1.]]]]

まとめ

  • 4次元配列の逆を求めるには numpy.linalg.tensorinv() を使用します。
  • 戻り値の形状は a.shape[ind:] + a.shape[:ind] になります。
  • 入力テンソルは「正方」条件(prod(a.shape[:ind]) == prod(a.shape[ind:]))を満たしている必要があります。
  • ind パラメータのデフォルト値は 2 です。
  1. Pythonで角度の三角関数の余弦(コサイン)を取得する方法

    numpy.cos()で余弦(コサイン)を求める PythonのNumPyで角度の三角関数における余弦(コサイン)を求めるには、numpy.cos()メソッドを使用します。このメソッドは、第1引数xの各要素に対する余弦を返し、xがスカラーであれば結果もスカラー値として返ります。 第1引数xはラジアン単位の角度です(2π=360度)。度数法の値をそのまま渡すことはできないため、np.piを使って変換するか、np.radians()やnp.deg2rad()でラジアンに変換してから渡します。 第2引数と第3引数は省略可能です。第2引数はndarrayで、計算結果を格納する配列(out)を指定します

  2. Pythonで配列が「美しい」かどうかを判定する方法

    この記事では、ユニークな要素からなる配列 nums が与えられたときに、その配列が「美しい配列」と呼べる条件を満たしているかどうかを判定する方法を解説します。満たすべき条件は以下の2つです。すべての要素が 1 から n の範囲内に収まっていること配列が昇順にソートされていないことたとえば、入力が nums = [2,6,1,5,3,4] の場合、出力は True になります。これは、すべての要素が 1〜6 の範囲に存在し、かつ昇順に並んでいないためです。解法のアプローチこの問題は、次の手順で解くことができます。n := nums のサイズとするtotal := nums[0] で初期化するis