Transpose

Transpose[list]

list の最初の2つのレベルを転置する.

Transpose[list,{n1,n2,}]

list の第 k レベルが最終的に第 nkレベルになるように list を転置する.

Transpose[list,mn]

list のレベル m とレベル n を転置する.他のレベルには変更を加えない.

Transpose[list,k]

list 内のレベルを k 位置分右に循環させる.

詳細とオプション

  • Transpose[m]は,行列 m の通常の転置を与える.
  • Transpose[m]mとして入力できる.
  • trあるいは\[Transpose]として入力できる.
  • 行列 m については,Transpose[m]Transpose[m,{2,1}]に等しい.
  • 深さ r3の配列 a については,Transpose[a]は最初の2レベルだけを転置したTranspose[a,{2,1,3,,r}]に等しい. »
  • Transpose[a,{n1,n2,}]あるいはTranspose[a,n1n2]niは,ArrayDepth[a]より小さい正の整数でなければならない.
  • {n1,n2,}が置換リストの場合は,Transpose[a,{n1,n2,}]の位置{i1,i2,}の要素は,配列 a の位置{in1,in2,}の要素である.
  • 置換 perm について,Transpose[a,perm]の次元はPermute[Dimensions[a],perm]である.
  • Transpose[a,perm]の置換リスト perm は,PermutationCycles[perm]が返すようなCycles形式で与えることもできる. »
  • Transpose[a,mn]あるいはTranspose[a,TwoWayRule[m,n]]Transpose[a,Cycles[{{m,n}}]]に等しい. »
  • Transpose[a,k]Transpose[a,RotateLeft[Range[n],k]]に等しい.ただし,na の深さである.
  • Transposeでは niを繰り返し,繰り返しのレベルによって決定された部分配列を計算することができる.したがって,結果の配列の深さは計算前より浅くなる.
  • 正方行列 m については,Transpose[m,{1,1}]は,Diagonal[m]が返すような m の主対角を返す. »
  • 一般に,np=nqなら,dp=dqのときの次元{d1,d2,}の任意の配列 a についてTranspose[a,{n1,n2,}]という操作が可能である.
  • TransposeSparseArrayオブジェクトと構造配列オブジェクトに使うことができる.

例題

すべて開くすべて閉じる

  (3)

3×3数値行列を転置する:

転置操作を可視化する:

2×3記号行列を転置する:

,続けてtrを使って転置演算子を入力する:

スコープ  (13)

行列  (6)

行列を格子として入力する:

行列を転置し,結果をフォーマットする:

行行列を列行列に転置する:

入出力をフォーマットする:

列行列を行行列に転置し直す:

ベクトルは転置しても変わらない:

Transposeは恒等行列は変えない:

s は疎な行列である:

Transpose[s]もまた疎である:

事実,指標が逆になっている:

SymmetrizedArrayオブジェクトを転置する:

結果は,その反対称性のために,もとの配列を負にしたものに等しい:

TraditionalFormによる記号転置をフォーマットする:

配列  (7)

3階配列の最初の2つのレベルの転置は,事実上,この配列をベクトルの行列として転置する:

別の置換を使って深さ3の配列を転置する:

深さ5の配列のレベルを右に2つの位置分循環させる:

TwoWayRule表記を使って転置を行う:

Cycles表記を使って転置を行う:

深さ4の配列のレベル2とレベル3を転置する:

2番目の次元と3番目の次元が入れ替えられた:

等しい2つのレベルを転置することで主対角を得る:

アプリケーション  (13)

行列分解  (4)

はランダムな実行列である:

QRDecompositionを求める:

は直交行列なのでその逆行列 TemplateBox[{q}, Transpose]も直交行列である:

を分解からを再構築する:

行列 SchurDecompositionを計算する:

行列 は直交行列なので,その逆行列 TemplateBox[{q}, Transpose]も直交行列である:

を分解から再構築する:

行列 SingularValueDecompositionを計算する:

行列 は直交するのでそれらの逆行列はその転置になる:

を分解から再構築する:

ランダムな行列である の特異値分解を構築する:

まず,TemplateBox[{a}, Transpose].a の固有系を計算する:

特異値は非零の固有値の平方根である:

行列は と同じ形状を持つ特異値の対角行列である:

行列は列に固有ベクトルを持つ:

行列は,非零の各固有値について の形の列を持つ:

が直交することを確認する:

分解を確認する:

特殊行列  (6)

対称行列は s=TemplateBox[{s}, Transpose]に従い反対称行列は a=-TemplateBox[{a}, Transpose]に従う.次の行列は対称行列である:

SymmetricMatrixQで確認する:

次の行列は反対称行列である:

AntisymmetricMatrixQで確認する:

TemplateBox[{o}, Inverse]=TemplateBox[{o}, Transpose]ならその行列は直交行列である.行列 が直交行列かどうかチェックする:

OrthogonalMatrixQを使って直交行列であることを確認する:

実数値対称行列は s=o.d.TemplateBox[{o}, Transpose]のように直交対角化可能である.ただし, は実対角行列では は直交行列である.次の行列が対称行列であることを確認し,次にこれを対角化する:

対角化するために,まず の固有値を計算し,それを対角行列に入れる:

次に,単位固有ベクトルを計算する:

は,上記の通りまた o=TemplateBox[{v}, Transpose]のように で対角化できる:

TemplateBox[{u}, Inverse]=TemplateBox[{{(, TemplateBox[{u}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Conjugate]ならその行列はユニタリ行列である.行列 がユニタリ行列であることを示す:

UnitaryMatrixQで確認する:

実行列 は, n.TemplateBox[{n}, Transpose]=TemplateBox[{n}, Transpose].n なら正規行列であると言われる.正規行列は n=u.d.TemplateBox[{{(, TemplateBox[{u}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Conjugate]としてユニタリ対角化可能な中で最も一般的な行列である.ただし, は対角行列で はユニタリ行列である.実対称行列 は,等式の両辺が単純に なので,すべて正規行列である:

次の行列が正規行列であることを示してから対角化する:

NormalMatrixQを使って確かめる:

のような正規行列はEigensystemを使ってユニタリ対角化できる:

以下の対角行列は対称行列とは違って複素数値である:

固有ベクトルを正規化してそれを列に入れるとユニタリ行列になる:

対角化 n=u.d.TemplateBox[{{(, TemplateBox[{u}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Conjugate]を確認する:

実反対称行列と直交行列は正規行列であり,したがってユニタリ対角化可能であることを示す.直交行列については,単純に定義 TemplateBox[{o}, Transpose]=TemplateBox[{o}, Inverse]に代入して両辺の恒等行列を求める:

反対称行列については,両辺は単純に である:

直交行列は単位円上にある固有値を持つ:

反対称行列は純粋に虚数の固有値を持つ:

可視化  (3)

Transposeを使ってBarChartにおけるデータのグループ化を変える:

Transposeを使ってListPlot3D 軸と 軸を入れ替える:

これは,直線 についてデータを反射する効果がある:

一次元のリストコマンドを(テンソル積の意味で)多次元化する:

例えば,配列のすべてのレベルで累計する:

配列のすべてのレベルで逆にする:

RGB画像をインポートする:

直線 について反射させて赤と青のチャンネルを入れ替えることですべてのレベルのデータを逆にする:

特性と関係  (18)

TransposeTemplateBox[{{(, TemplateBox[{A}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Transpose]=A に従う:

Transposeは,互換行列 についてTemplateBox[{{(, {a, ., b}, )}}, Transpose]=TemplateBox[{b}, Transpose].TemplateBox[{a}, Transpose]に従う:

逆行列はTransposeと可換である.すなわちTemplateBox[{{(, TemplateBox[{a}, Transpose], )}}, Inverse]=TemplateBox[{{(, TemplateBox[{a}, Inverse], )}}, Transpose]

Conjugate[Transpose[m]]ConjugateTransposeを使うと1ステップになる:

多くの特殊行列はその特性によってTransposeのもとで定義される.対称行列は TemplateBox[{s}, Transpose]=s である:

直交行列は TemplateBox[{o}, Transpose]=TemplateBox[{o}, Inverse]を満足する:

行列とその転置の積は対称である:

の行列積である:

TemplateBox[{s}, Transpose]=TemplateBox[{{(, {TemplateBox[{m}, Transpose], ., m}, )}}, Transpose]=TemplateBox[{m}, Transpose].TemplateBox[{{(, TemplateBox[{m}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Transpose]=TemplateBox[{m}, Transpose]m=s なので は対称である:

平方行列とその転置の和は対称である:

TemplateBox[{m}, Transpose]の行列和である:

TemplateBox[{s}, Transpose]=TemplateBox[{{(, {TemplateBox[{m}, Transpose, SyntaxForm -> SuperscriptBox], +, m}, )}}, Transpose]=TemplateBox[{m}, Transpose]+TemplateBox[{{(, TemplateBox[{m}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Transpose]=TemplateBox[{m}, Transpose]+m=s なので は対称である:

差は反対称である:

{{}}の転置は{}を返す:

次元{1,0}の置換は{0,1}であり次元が{0,1}の式はないので,結果は再度{{}}にはならない:

Transpose[a]は配列の最初の2レベルを転置する:

Transpose[a,perm]は次元がPermute[Dimensions[a],perm]の配列を返す:

次元が{2,3,4}の配列を取る:

置換 σ による転置は,要素の位置をσ-1分転置する:

Transpose[a,Cycles[{{m,n}}]]Transpose[a,mn]は等しい:

どちらの形もPermutationList[Cycles[{{m,n}}]を使うことに等しい:

転置の組成は,その置換の積に等しい(ただし,順序は等しいものとする):

転置は,通常は,可換ではない:

Transpose[a,σ]Flatten[a,List/@InversePermutation[σ]]に等しい:

TransposeTensorTransposeは厳密配列と一致する:

TensorTransposeは,Transposeがサポートしない記号操作もサポートする:

行列の転置はThreadを使って行うこともできる:

Transpose[m,{1,1}]Diagonal[m]に等しい:

Transpose[a,{1,,1,2,3,}]は転置されているレベルをレベル1にトレースすることに等しい:

考えられる問題  (1)

Transposeは矩形行列にのみ用いることができる:

充填で転置を一般化する:

充填を除外する:

おもしろい例題  (1)

Wolfram Research (1988), Transpose, Wolfram言語関数, https://reference.wolfram.com/language/ref/Transpose.html (2024年に更新).

テキスト

Wolfram Research (1988), Transpose, Wolfram言語関数, https://reference.wolfram.com/language/ref/Transpose.html (2024年に更新).

CMS

Wolfram Language. 1988. "Transpose." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Transpose.html.

APA

Wolfram Language. (1988). Transpose. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Transpose.html

BibTeX

@misc{reference.wolfram_2024_transpose, author="Wolfram Research", title="{Transpose}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Transpose.html}", note=[Accessed: 14-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_transpose, organization={Wolfram Research}, title={Transpose}, year={2024}, url={https://reference.wolfram.com/language/ref/Transpose.html}, note=[Accessed: 14-November-2024 ]}