Mathematica において行列はリストで表される.行列は,{ } 表記を使って直接入力,公式から構築,データファイルからインポートのいずれかの方法を使って入力することができる.
Mathematica には対角行列,定数行列等特別の型を持つ行列を作成するコマンドも含まれている.
行列は,

表記を使って直接入力することができる:
| Out[40]= |  |
MatrixFormを使って行列表記で結果を表示することができる:
Out[41]//MatrixForm= |
| |  |

は,

を入力するもうひとつの方法である.

が形式に関する関数である場合に使用すると便利なことがある.
以下では
Tableを使って

および

の値の格子を作成する:
Out[44]//MatrixForm= |
| |  |
Mathematica における行列は,数字の行列に限られているわけではない.公式のように記号的な項目を行列に含めることも可能である:
Out[46]//MatrixForm= |
| |  |
行列を作成してそれを割当てと一緒に保存する場合に,これを
MatrixFormを使ってフォーマットすることと組み合せて使わないようにすることが大切である.カッコを使う:
Out[47]//MatrixForm= |
| |  |

を使ってさらに計算することができる:
Out[48]//MatrixForm= |
| |  |
Out[49]//MatrixForm= |
| |  |

は行列のように表示されるが,計算上では行列のようには作動しない.例えば,以下の計算では行列の掛け算を行わない:
| Out[50]= |  |

の値は,
FullFormを使って検証することができる:
Out[51]//FullForm= |
| |  |

はフォーマットを行うラッパー
MatrixFormも含んでおり,これが

を行列として作動させないようにしていることが上から分かる.
以下では,

から

までの間にある実数値の4×5 行列を作成する:
Out[136]//MatrixForm= |
| |  |
これは対角線上のみに非零の項目がある行列を作成する:
Out[53]//MatrixForm= |
| |  |
Out[54]//MatrixForm= |
| |  |
4×4のヒルベルト行列を作成する.各項目は

の形式を持っている:
Out[55]//MatrixForm= |
| |  |
ここでは,ランダムな3×3行列のQR分解が計算される:
Out[142]//MatrixForm= |
| |  |
Mathematica 関数が行列を返す場合に,パックアレイと呼ばれる最適化ストレージフォーマットが使われることが多い.
Mathematica ではリストに対して数多くのよく使われる操作を適用し,各要素に関数がマップされた別のリストを得ることができる.行列はリストのリストであるので,行列についても同様の操作を行うことができる.
Out[60]//MatrixForm= |
| |  |
Out[61]//MatrixForm= |
| |  |
この
Sqrtの動作はリスト作成機能と呼ばれ,非常に読みやすく効率的なコードを作成する.
リストを作成できない関数が使用される場合には,この関数は各要素にマップされない:
| Out[62]= |  |
この関数をリストが作成できるものに変えると,各要素がマップされるようになる:
Out[64]//MatrixForm= |
| |  |
行列を作成するためのもうひとつの方法としてデータファイルをインポートするという方法がある.これは,
Table (.dat),
CSV (.csv),
TSV (.tsv)等の表形式を使って行える.行列は
Excelのスプレッドシート(.xls)から読むこともできる.
以下は
ImportStringを使ってCSV形式の文字列を行列にインポートした例である.ファイルからのインポートは
Importを使って行われる:
| Out[65]= |  |
Mathematica は,科学的あるいは医学的なデータ形式である
HarwellBoeing,
MAT,
HDF,
NASACDF,
FITS等,その他の数多くの形式もサポートしている.
行列を作成する方法がプログラムの効率性に大きな影響を与えることもある.最大の効率を得るためには,行列に付け加えたり不必要な作成操作を行ったりすることを避け,可能な場合にはリストに記載できる操作を使用するべきである.
以下の例では,行列に絶えず新しい行が付け加えられる:
| Out[67]= |  |
1度の計算で行列を作成する方がずっと速い.
Forループを使用する状況になった場合には常に
Tableのようなその他の構築を使ってこれを置き換える方法がないかをチェックしてみた方がよい:
| Out[68]= |  |
以下の例では,ゼロの

行列を作成し,これをループで充填する.ここで行うゼロの行列の作成はまったく不必要な操作である:
| Out[69]= |  |
行列の各行に対して前駆体を1度作成し,それをリストに記載可能な操作と一緒に使用する方がずっと速い:
| Out[70]= |  |
行列が大きく,多くの要素が同じ(例えば,ゼロ)である場合,
SparseArrayで生成される疎行列を使って作業することを考慮すべきである.