宇野  和也

宇野 和也

1636120800

PythonのNumpy Linalg Tensorsolve()関数

Numpy linalg tensorsolve()関数は、xのax = bの方程式を計算するために使用されます。行われているように、すべてのxインデックスが積とaの正しいインデックスの上に要約されていると想定されます。たとえば、tensordot(a、x、axes = b.ndim)。

構文

numpy.linalg.tensorsolve(A, B, axes=None )

パラメーター

  1. A:係数テンソル、条件b。status + Q. Q、タプルは、正しいインデックスの数が正しいサブテンソルの形状に等しく、同じである必要があります(pr)(Q)== prod(b).shape)( 「正方形」と呼ばれます)。
  2. B:右側のテンソル。任意の形状にすることができます。 

戻り値

linalg tensorsolve()関数は、Qと同じ形状のndarrayを返します。 

Aが特異であるか正方行列でない場合、linalg tensorsolve()関数はLinAlgErrorをスローします。

プログラミング例

tensorsolve()の動作を示すプログラム:

# Program to show working of solve()
import numpy as np

# creating the array "a"
A = np.array([[3, 4, 5], [1, 2, 3], [2, 4, 5]])
B = np.array([9, 8, 7])
print("Array A is: \n", A)
print("Array B is : \n", B)

# Calculating the equation
ans = np.linalg.tensorsolve(A, B)

# Printing the answer
print("Answer of the equation is  :\n", ans)

# Checking if the answer if correct
print(np.allclose(np.dot(A, ans), B))

出力

Array A is:
 [[3 4 5]
 [1 2 3]
 [2 4 5]]
Array B is :
 [9 8 7]
Answer of the equation is  :
 [  2.  -10.5   9. ]
True

説明

この例では、特異ではない3×3の正方行列を作成し、それを印刷しました。次に、サイズ3の配列を作成し、それも印刷しました。

次に、numpy.linalg.tensorsolve()呼び出して、方程式Ax = Bを計算しましたBの逆形状の出力があることがわかります。
 

また、ついに、返された答えがTrueであるかどうかを確認しました。

 

numpy linalg tensorsolve()関数については以上です。

リンク: https://appdividend.com/2020/11/09/numpy-linalg-tensorsolve-function-in-python/

#python 

What is GEEK

Buddha Community

PythonのNumpy Linalg Tensorsolve()関数
宇野  和也

宇野 和也

1636120800

PythonのNumpy Linalg Tensorsolve()関数

Numpy linalg tensorsolve()関数は、xのax = bの方程式を計算するために使用されます。行われているように、すべてのxインデックスが積とaの正しいインデックスの上に要約されていると想定されます。たとえば、tensordot(a、x、axes = b.ndim)。

構文

numpy.linalg.tensorsolve(A, B, axes=None )

パラメーター

  1. A:係数テンソル、条件b。status + Q. Q、タプルは、正しいインデックスの数が正しいサブテンソルの形状に等しく、同じである必要があります(pr)(Q)== prod(b).shape)( 「正方形」と呼ばれます)。
  2. B:右側のテンソル。任意の形状にすることができます。 

戻り値

linalg tensorsolve()関数は、Qと同じ形状のndarrayを返します。 

Aが特異であるか正方行列でない場合、linalg tensorsolve()関数はLinAlgErrorをスローします。

プログラミング例

tensorsolve()の動作を示すプログラム:

# Program to show working of solve()
import numpy as np

# creating the array "a"
A = np.array([[3, 4, 5], [1, 2, 3], [2, 4, 5]])
B = np.array([9, 8, 7])
print("Array A is: \n", A)
print("Array B is : \n", B)

# Calculating the equation
ans = np.linalg.tensorsolve(A, B)

# Printing the answer
print("Answer of the equation is  :\n", ans)

# Checking if the answer if correct
print(np.allclose(np.dot(A, ans), B))

出力

Array A is:
 [[3 4 5]
 [1 2 3]
 [2 4 5]]
Array B is :
 [9 8 7]
Answer of the equation is  :
 [  2.  -10.5   9. ]
True

説明

この例では、特異ではない3×3の正方行列を作成し、それを印刷しました。次に、サイズ3の配列を作成し、それも印刷しました。

次に、numpy.linalg.tensorsolve()呼び出して、方程式Ax = Bを計算しましたBの逆形状の出力があることがわかります。
 

また、ついに、返された答えがTrueであるかどうかを確認しました。

 

numpy linalg tensorsolve()関数については以上です。

リンク: https://appdividend.com/2020/11/09/numpy-linalg-tensorsolve-function-in-python/

#python 

Elton  Bogan

Elton Bogan

1600200960

SciPy Linear Algebra - SciPy Linalg

SciPy is one of the fundamental packages for scientific computations. It provides the user with mathematical algorithms and convenient built-in functions. It is handy in the field of data science. There are modules in SciPy for working with data science, maths, statistics, and also machine learning. We use scipy.linalg modules for working with machine learning concepts. Let us learn more about SciPy Linear Algebra.

#numpy tutorials #scipy linalg #scipy linear algebra #numpy

宇野  和也

宇野 和也

1636142820

PythonのNumpy Linalg Slogdet()関数

Numpy linalg slogdet()関数は、配列の行列式の符号と(自然)対数を計算するために使用されます。ここで問題となるのは、このslogdet()がいつ必要になるかということです。

ほとんどのリストのインデックスが少なすぎるか少なすぎる場合、det()の呼び出しがオーバーフローまたはアンダーフローする可能性があります。このプロセス(slogdet())は、ショートカット自体ではなくショートカットの対数を含むため、このような問題よりもはるかに堅牢です。

構文

numpy.linalg.slogdet(array)

パラメーター

slogdet()関数は単一のパラメーターを取ります。

  1. 配列:これは2D配列であり、正方形である必要があります。 

戻り値

slogdet()関数は2つの値を返します。

 

サイン: 

行列式の符号を表す数値。実数行列の場合、これは1、0、または-1です。複素行列の場合、これは絶対値が1の複素数(つまり、単位円上にある)、または0の複素数です。

logdet:

これは、行列式の絶対値の自然対数です。

 

行列式がゼロの場合、 `sign`は0になり、` logdet`

-Inf。すべての場合において、行列式は「sign * np.exp(logdet)」と同じです。

プログラミング例

1つの2D配列の行列式を計算するプログラム

# Program to calculate determinant of one 2D array
import numpy as np

# creating a 2D array
arr = np.array([[3, 4, 5], [7, 8, 6], [10, 11, 2]])

# printing the array
print(arr)

# calculating the slogdet
(sign, logdet) = np.linalg.slogdet(arr)

# Printing those values
print("Sign is : ", sign)
print("Logdet is :", logdet)

出力

[[ 3  4  5]
 [ 7  8  6]
 [10 11  2]]
Sign is :  1.0
Logdet is : 2.944438979166441

説明

このプログラムでは、サイズ3×3の正方行列を作成し、それを印刷しました。
 

次に、slogdet()を呼び出して、配列の符号とlogdetを取得しました。
 

サイン1を取得したことがわかります。

行列のスタックの対数行列式を計算するプログラム。

次のコードを参照してください。

# Computing log-determinants for a stack of matrices
import numpy as np

# creating the stack matrices
arr = np.array([[[2, 1], [3, 4]], [[3, 4], [5, 6]], [[7, 8], [9, 10]]])
# printing the values
print("The array is:\n", arr)
print("Shape of the array is: ", arr.shape)

# Calculating the slogdet
(sign, logdet) = np.linalg.slogdet(arr)

# Printing those values
print("Sign is : ", sign)
print("Logdet is :", logdet)

出力

The array is:
 [[[ 2  1]
  [ 3  4]]

 [[ 3  4]
  [ 5  6]]

 [[ 7  8]
  [ 9 10]]]
Shape of the array is:  (3, 2, 2)
Sign is :  [ 1. -1. -1.]
Logdet is : [1.60943791 0.69314718 0.69314718]

説明

このプログラムでは、サイズ3×2の正方行列を作成し、それを印刷しました。

次に、slogdet()関数を呼び出して、配列の符号とlogdetを取得しました。

記号[1.-1。-1]。

リンク: https://appdividend.com/2020/11/09/numpy-linalg-slogdet-function-in-python-with-example/

#python 

PythonのNumpy Linalg Det()メソッド

数値パッケージNumPyを使用してPythonで行列式の値を計算するには、numpy.linalg.det()関数を使用します。しかし、行列の行列式は何ですか:それは2つの対角要素(左対角-右対角)の積の減算から計算されます。

np.linalg.det

Numpy linalg det()は、正方行列の行列式を取得するために使用されます。 たとえば、2×2 [[1、2]、[2、4]]の行列がある場合、答えは(4 * 1)-(2 * 2)= 0になります。np.linalg.det()関数は引数として配列を取り、指定された配列の行列式を返します。

行列式は、線形代数の計器値です。正方行列の対角項目から計算されます。2×2行列の場合、他の2つの積から左上と右下の項目の積を引くだけです。

構文

numpy.linalg.det(array)

np.linalg.det()関数は、パラメーターとして1つの引数、つまり配列名のみを取ります。

 

戻り値

np.linalg.det()関数は、指定された配列の行列式を返します。戻り値はfloatデータ型になります。

プログラミング例

2×2マトリックスでのinlag.det()の動作を示すプログラム:

# Importing numpy
import numpy as np

# This will create a 2D array of shape 2x2 with values 5 to 8
arr = np.arange(5, 9).reshape(2, 2)
print("The array is:\n", arr)
print("Shape of the array is : ", np.shape(arr))

# Now we will print determinant using det() function
print("Determinant of the given array: ", np.linalg.det(arr))

# Verify with the manual caculation
detr = (5*8)-(7*6)
print("Determinant using manual method: ", detr)

出力

The array is:
 [[5 6]
 [7 8]]
Shape of the array is :  (2, 2)
Determinant of the given array:  -2.000000000000005
Determinant using manual method:  -2

説明:

この例では、最初に2×2の形状の配列を1つ作成し、それを印刷しました。次に、numpy.linalg.det()関数を呼び出して、指定された配列の行列式を計算しました。次に、行列式を手動で計算しました。両方の値がほぼ同じであることがわかります。

 

3×3マトリックスでlinalg.det()の動作を示すプログラム:

次のコードを参照してください。

# Importing numpy
import numpy as np

# This will create a 2D array of shape 3x3 with values 1 to 9
arr = np.arange(1, 10).reshape(3, 3)
print("The array is:\n", arr)
print("Shape of the array is : ", np.shape(arr))

# Now we will print determinant using det() function
print("Determinant of the given array: ", np.linalg.det(arr))

# Verify with the manual caculation
detr = 1*(5*9 - 6*8) + 2*(4*9 - 6*7) - 3*(4*8 - 5*7)
print("Determinant using manual method: ", detr)

出力

The array is:
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
Shape of the array is :  (3, 3)
Determinant of the given array:  0.0
Determinant using manual method:  -6

説明

この例では、最初に形状3×3の1つの配列を作成し、それを印刷しました。次に、numpy.linalg.det()関数を呼び出して、指定された配列の行列式を計算しました。次に、行列式を手動で計算しました。両方の値がほぼ同じであることがわかります。

結論

言い換えると、行列[[w、x]、[c、d]]の場合、行列式は「ad-bc」として計算されます。大きい方の正方行列は、2×2行列の組み合わせと見なされます。 numpy.linalg.det() 関数は、入力行列の行列式を計算します。

最後に、Pythonの例のNumpy linalg det()メソッドは終了しました。

リンク: https://appdividend.com/2020/06/03/numpy-linalg-det-method-in-python/

#python 

宇野  和也

宇野 和也

1637936761

PythonのNumpy Where()関数とは

numpy where()メソッドを使用すると、条件を満たすNumpy配列ndarrayの要素を置き換えたり、指定された処理を実行したりできます。このチュートリアルでは、numpyインストールする必要があります。numpyのバージョンを確認することもできます。

np.where

np.where()メソッドは、条件に応じてxまたはyから選択された要素を返します。条件に基づいて要素を選択する場合は、np where()関数を使用します。where()関数は、引数として条件式を取り、新しいnumpy配列を返します。

構文

numpy.where(condition[, x, y])

パラメーター

condition:ブール値のNumpy配列を返す条件式。
x、y: 配列(オプション、つまり、両方が渡されるか渡されないかのいずれか)

  • すべての引数–>条件、xおよびyがnumpy.where()メソッドで指定されている場合、条件によって生成されたブール配列の値に応じて、xおよびyから選択された要素が返されます。3つの配列はすべて同じサイズである必要があります。
  • x&y引数が渡されず、条件引数のみが渡される場合、条件によって返されるbool numpy配列でTrueである要素のインデックスを含む配列のタプル(各軸に1つ)が返されます。

これは、条件が配列内の一部の要素に対してTrue返す場合、新しい配列はxから項目を選択するということです。

 

それ以外の場合、Falseの場合、yからのアイテムが取得されます。

これにより、最終的な出力配列は、条件= Trueの場合は常にxからのアイテム、条件= Falseの場合は常にyからのアイテムを含む配列になります。

 

ここ注意すべきことの1つは、xとyはオプションですが、xを指定する場合は、yも指定する必要があることに注意してくださいこの場合、出力配列の形状は入力配列と同じである必要があるため、これを行う必要があります。

戻り値

where()メソッドは、条件に基づいてフィルタリングした後、新しいnumpy配列を返します。これはブール値のnumpyのような配列です。

import numpy as np

data = np.where([True, False, True], [11, 21, 46], [19, 29, 18])
print(data)

出力

[11 29 46]

Numpy.where()はbool配列を反復処理し、Trueごとに対応する要素配列xを生成し、Falseごとに配列yから対応する要素を生成します。したがって、条件Trueの場合はxからアイテムの配列を返し、それ以外の場合はyからの要素を返します。

条件は、 numpyのようなブール配列である配列([真の、真の、真]])の値をとることができます。(デフォルトでは、NumPyは数値のみをサポートしますが、ブール値にキャストすることもできます)。

別の例を見てみましょう。条件がarray([[True、True、False]])で、配列がa = ndarray([[1、2、3]])の場合、配列(a [ :、condition])、配列ndarray([[1 2]])を取得します。

要素をnumpy.where()に置き換える

私たちは、使用されます()np.random.randn 2次元配列を生成する機能を、我々は唯一の出力は、正の要素になります。コードを参照してください。

import numpy as np

# Random initialization of (2D array)
arr = np.random.randn(2, 3)
print(arr)

# result will be all elements of a whenever the condition holds true (i.e only positive elements)
# Otherwise, set it as 0
result = np.where(arr > 0, arr, 0)

print(result)

出力

[[-1.49929393  0.68739761 -0.59852165]
 [ 0.59212319  1.81549763 -0.32777714]]
[[0.         0.68739761 0.        ]
 [0.59212319 1.81549763 0.        ]]

出力から、これらの負の値の要素が削除され、代わりに0が負の値に置き換えられていることがわかります。

複数の条件でnpwhere()を使用する

各条件式が()および&または|で囲まれている場合 が使用される場合、処理は複数の条件に適用されます。

import numpy as np

# Random initialization of a (2D array)
arr = np.random.randn(2, 3)
print(arr)

result = np.where((arr > 0.1) & (arr < 1) | (arr == 0.5), -1, 19)

print(result)

出力

[[-0.51877986  2.29435425  0.76549418]
 [-0.94666634  1.74349695 -0.82869105]]
[[19 19 -1]
 [19 19 19]]

出力から、and演算子およびor演算子を使用して3つの条件を適用したことがわかります。配列要素の値が0.1〜0.99または0.5の場合、-1を返します。それ以外の場合は19を返します。

複数の条件の場合でも、ブール値ndarrayを取得するためにnp.where()を使用する必要はありません。

条件を満たす要素を処理する

元のndarrayの代わりに、要素が条件を満たす場合に要素に対して実行する操作を指定することもできます。

import numpy as np

# Random initialization of a (2D array)
arr = np.random.randn(2, 3)
print(arr)

result = np.where(arr < 1, arr * 10, 19)
print('\n')
print('The array after performing the operation')
print(result)

出力

[[ 0.4934594  -0.43502907 -0.01968412]
 [-0.52953907  0.41415299 -0.29620816]]


The array after performing the operation
[[ 4.93459402 -4.35029075 -0.19684123]
 [-5.2953907   4.14152986 -2.96208157]]

アイテムが10未満の場合は、すべての要素に10が乗算されることがわかります。それ以外の場合は、その場所に19が返されます。

numpy.where()でブロードキャスト

すべての条件、x、およびy配列を提供すると、numpyはそれらを一緒にブロードキャストします。 

次のコードを参照してください。

import numpy as np

arr = np.arange(6).reshape(2, 3)

brr = np.arange(3).reshape(1, 3)

print(arr)
print(brr)

# Broadcasts (arr < 2, arr, and brr * 5)
# of shape (2, 3), (2, 3) and (1, 3)
c = np.where(arr < 2, arr, brr * 5)
print(c)

出力

[[0 1 2]
 [3 4 5]]
[[0 1 2]]
After broadcasting:
[[ 0  1 10]
 [ 0  5 10]]

最後に、Numpy where()関数の例は終わりです。

リンク: https://appdividend.com/2020/06/04/numpy-where-example-np-where-function-in-python/

#python