NumPy 行列ライブラリ(Matrix)

NumPy には行列ライブラリが含まれていますnumpy.matlibこのモジュールの関数は ndarray オブジェクトではなく行列を返します。

numpy.matlib行列(matrix)オブジェクトの作成と操作に特化しています。NumPy のコアは多次元配列(ndarray)をサポートしていますが、numpy.matlib は行列型を返す便利な関数を提供し、ユーザーが従来の線形代数演算を行いやすくします。

一つの行列は、~から成る行(row)列(column)の要素が並べられた矩形配列。

行列の要素は、数値、記号、または数式にすることができます。以下は、6つの数値要素からなる2行3列の行列です:

転置行列

NumPyでは、numpy.transpose 関数を使用して配列の次元を入れ替えるだけでなく、次を使用することもできます。T属性。

例えば、m 行 n 列の行列がある場合、t() 関数を使用すると n 行 m 列の行列に変換できます。

例

import numpy as np a = np.arange(12).reshape(3,4) print ('元の配列:') print (a) print ('\n') print ('転置された配列:') print (a.T)

出力結果は次のとおりです:

原数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


转置数组:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]

matlib.empty()

matlib.empty() 関数は新しい行列を返します。構文形式は次のとおりです:

numpy.matlib.empty(shape, dtype, order)

パラメータの説明:

  • shape: 新しい行列の形状を定義する整数または整数タプル
  • Dtype: オプション、データ型
  • order: C(行優先)または F(列優先)

例

import numpy.matlib import numpy as np print (np.matlib.empty((2,2))) # ランダムデータを埋める

出力結果は次のとおりです:

[[-1.49166815e-154 -1.49166815e-154]
 [ 2.17371491e-313  2.52720790e-212]]

numpy.matlib.zeros()

numpy.matlib.zeros() 関数は、0 で埋められた行列を作成します。

例

import numpy.matlib import numpy as np print (np.matlib.zeros((2,2)))

出力結果は次のとおりです:

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

numpy.matlib.ones()

numpy.matlib.ones() 関数は、1 で埋められた行列を作成します。

例

import numpy.matlib import numpy as np print (np.matlib.ones((2,2)))

出力結果は次のとおりです:

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

numpy.matlib.eye()

numpy.matlib.eye() 関数は、対角要素が 1 で、その他の位置がゼロの行列を返します。

numpy.matlib.eye(n, M,k, dtype)

パラメータの説明:

  • n: 返される行列の行数
  • M: 返される行列の列数、デフォルトは n
  • k: 対角線のインデックス
  • dtype: データ型

例

import numpy.matlib import numpy as np print (np.matlib.eye(n = 3, M = 4, k = 0, dtype = float))

出力結果は次のとおりです:

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

numpy.matlib.identity()

numpy.matlib.identity() 関数は、指定されたサイズの単位行列を返します。

単位行列は正方行列であり、左上から右下への対角線(主対角線と呼ばれます)上の要素はすべて 1 で、それ以外はすべて 0 です。

例

import numpy.matlib import numpy as np # サイズは 5、型は浮動小数点型 print (np.matlib.identity(5, dtype = float))

出力結果は次のとおりです:

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

numpy.matlib.rand()

numpy.matlib.rand() 関数は、指定されたサイズの行列を作成し、データはランダムに埋められます。

例

import numpy.matlib import numpy as np print (np.matlib.rand(3,3))

出力結果は次のとおりです:

[[0.23966718 0.16147628 0.14162   ]
 [0.28379085 0.59934741 0.62985825]
 [0.99527238 0.11137883 0.41105367]]

行列は常に2次元ですが、ndarray は n 次元配列です。2つのオブジェクトは相互に交換可能です。

例

import numpy.matlib import numpy as np i = np.matrix('1,2;3,4') print (i)

出力結果は次のとおりです:

[[1  2] 
 [3  4]]

例

import numpy.matlib import numpy as np j = np.asarray(i) print (j)

出力結果は次のとおりです:

[[1  2] 
 [3  4]]

例

import numpy.matlib import numpy as np k = np.asmatrix (j) print (k)

出力結果は次のとおりです:

[[1  2] 
 [3  4]]

以下の関数も NumPy の名前空間に存在しますが、これらは行列オブジェクトを返します。

関数名 パラメータの説明 機能の説明
matrix(data[, dtype, copy]) data:配列に似たオブジェクトまたは文字列、dtype:データ型、copy:コピーするかどうか 配列または文字列から行列オブジェクトを作成します
asmatrix(data[, dtype]) data:入力データ、dtype:データ型(オプション) 入力を行列オブジェクトに変換します
bmat(obj[, ldict, gdict]) obj:文字列またはネストされたシーケンス、ldict、gdict:名前空間辞書(オプション) 文字列、ネストされたシーケンス、または配列から行列を構築します
empty(shape[, dtype, order]) shape:形状、dtype:データ型、order:格納順序 未初期化の要素を持つ行列を作成します
zeros(shape[, dtype, order]) shape:形状、dtype:データ型、order:格納順序 すべてゼロの行列を作成します
ones(shape[, dtype, order]) shape:形状、dtype:データ型、order:格納順序 すべて1の行列を作成します
eye(n[, M, k, dtype, order]) n:行数、M:列数、k:対角線のオフセット、dtype:データ型、order:格納順序 対角線が1で、残りが0の行列を作成します
identity(n[, dtype]) n:サイズ、dtype:データ型(オプション) 単位正方行列を作成します
repmat(a, m, n) a:配列または行列、m、n:繰り返し回数 配列または行列を m 行 n 列に繰り返します
rand(args) args: 行列の形状を指定します 指定された形状の一様分布のランダム行列を生成します
randn(args) args:行列の形状を指定します 指定された形状の標準正規分布のランダム行列を生成します

注意事項

  • とはいえnumpy.matlib便利ですが、NumPy 公式は使用を推奨していますndarrayと@演算子を使用して行列演算を完了する、なぜならmatrix型にはいくつかの制限があり、将来のバージョンでは非推奨になる可能性があります。
  • 新しいコードでは、優先的に使用することをお勧めしますndarray、より良い互換性と柔軟性を確保するためです。
その他の拡張