|
2.9.8 表と行列

表と行列の表示形を使ったリスト要素の出力書式の設定
表示例に使う数値リストを作っておく.
In[1]:= Table[(i + 45)^j, {i, 3}, {j, 3}]
Out[1]= 
TableFormを使い数値を表の形で表示する.
In[2]:= TableForm[%]
Out[2]//TableForm= 
MatrixFormで行列の形で表示する.
In[3]:= MatrixForm[%]
Out[3]//MatrixForm= 
代数式の配列を行列の形で表示する.
In[4]:= MatrixForm[ Table[x^i - y^j, {i, 3}, {j, 3}] ]
Out[4]//MatrixForm= 

数の右揃え表型表示
数値リストを作っておく.
In[5]:= fac = {10!, 15!, 20!}
Out[5]= 
TableFormで数値を1列表示する.
In[6]:= TableForm[fac]
Out[6]//TableForm= 
桁数が小さすぎるときは数値手前にス ペースをあてがうことで表示桁長を20桁にし,右揃えの列表示をする.
In[7]:= PaddedForm[TableForm[fac], 20]
Out[7]//PaddedForm= 
TableAlignmentsで右揃え設定にしても,同じように表示できる.
In[8]:= TableForm[fac, TableAlignments -> {Right}]
Out[8]//TableForm= 
合計8桁,小数点以下5桁の右揃えにする.
In[9]:= PaddedForm[TableForm[{6.7, 6.888, 6.99999}], {8, 5}]
Out[9]//PaddedForm= 
TableFormと MatrixFormを使えば何次元のリストでも要素を的確な均等間隔で表示できる.
要素の配列 a[i, j]を均等間隔で表示する.
In[10]:= TableForm[ Array[a, {2, 2}] ]
Out[10]//TableForm= 
要素の配列を表示する.
In[11]:= TableForm[ { Array[a, {2, 2}], Array[b, {2, 2}] } ]
Out[11]//TableForm= 
さらに, 要素の配列を表示 する.
In[12]:= TableForm[ { {Array[a, {2, 2}], Array[b, {2, 2}]}, {Array[c, {2, 2}], Array[d, {2, 2}]} } ]
Out[12]//TableForm= 
次元の表の表示において,通常,次に続く次元は入れ替りで列,そして,行に割り付けられる.TableDirections ->  , , ... の設定条件を与えておけば(ここで, は, Columnか Rowを指定する),数値を次元別に列方向,または,行方向に並べることが可能である.デフォルトでは, Column, Row, Column, Row, ... と交互に並べられる.
並び方向を決めるオプション TableDirectionsを使い,多次元の配列要素の表の構成を指定する.
In[13]:= TableForm[ { Array[a, {2, 2}], Array[b, {2, 2}] }, TableDirections -> {Row, Row, Column} ]
Out[13]//TableForm= 
 , , ... 等のネストしたリストを表の形で表示するとき,サブリスト 本体か,各サブリストの要素のどちらが主次元になるのだろう.デフォルトの設定は,MatrixFormとTableFormで少し違う.
行列形式 MatrixFormは矩形の配列のみに適用可能である.したがって,二次元の配列なら,すべての行の長さは同じでなければいけない.さもないと,その配列はサブリストを要素とした一次元配列とみなされてしまう.
この配列では行の長さが違うので,行列形で表示させると,一次元の配列とみなされてしまう.
In[14]:= MatrixForm[{{a, a, a}, {b, b}}]
Out[14]//MatrixForm= 
行列形式 MatrixFormは矩形の配列しか扱えないが,表形式 TableFormは行方向に不揃いの配列でも扱える.行で要素の足りない部分は空のまま表示する.
TableFormなら配列が不揃いでも表示できる.
In[15]:= TableForm[{{a, a, a}, {b, b}}]
Out[15]//TableForm= 
「副次的な表」を混ぜて表示することも可能である.
In[16]:= TableForm[{{a, {{p, q}, {r, s}}, a, a}, {{x, y}, b, b}}]
Out[16]//TableForm= 
ネストしているリストを表形式もしくは行列形式で表示するとき,次元のオプション TableDepthを使い表示する最大ネストレベルを指定することができる.
TableFormで表示するが,第2レベル(二次元)以上は表示しないよう指定しておく.サブリスト {x, y}は表の単一の要素として扱われる.
In[17]:= TableForm[{{a, {x, y}}, {c, d}}, TableDepth -> 2]
Out[17]//TableForm= 

表形式の設定条件
表の要素配置 TableAlignmentsを設定することで,表の各入力要素を行や列の辺に合わせて並べることが可能になる.列合せの指定では,左,中央,右(Left,Center,Right)を指定することができる.また,行合せでは,下,中央,上(Bottom, Center,Top)を指定することができる.TableAlignments -> Centerと指定すれば,表の全要素が水平・垂直方向で中央に揃えることができる.デフォルトの揃え方に戻すには, TableAlignments -> Automaticにする.
通常,表の列要素は左揃えになる.
In[18]:= TableForm[{a, bbbb, cccccccc}]
Out[18]//TableForm= 
中央揃えにする.
In[19]:= TableForm[{a, bbbb, cccccccc}, TableAlignments -> Center]
Out[19]//TableForm= 
表の要素間隔 TableSpacingを使うと隣接要素の水平・垂直間隔をスペース記号の単位で指定できる.0とすれば,間隔なしになる.
列と列の間をスペース記号6個分にし,行と行の間は間隔なしにする.
In[20]:= TableForm[{{a, b}, {ccc, d}}, TableSpacing -> {0, 6}]
Out[20]//TableForm= 

表のラベル設定
要素の配列に番号ラベルを付ける.
In[21]:= TableForm[Array[a, {2, 2, 2}], TableHeadings -> Automatic]
Out[21]//TableForm= 
行には番号ラベルを付け,列には指定の文字列ラベルを付ける.
In[22]:= TableForm[{{a, b, c}, {ap, bp, cp}}, TableHeadings -> {Automatic, {"first", "middle", "last"}}]
Out[22]//TableForm= 
行にだけラベルを付ける.3番目のラベルも指定したので,空の行が自動挿入される.
In[23]:= TableForm[{{2, 3, 4}, {5, 6, 1}}, TableHeadings -> {{"row a", "row b", "row c"}, None}]
Out[23]//TableForm= 
|