JavaScriptで2次元配列(行列)を転置する方法
JavaScriptで2次元配列(行列)を扱う際、行と列を入れ替える「転置(Transpose)」という操作が必要になることがあります。この記事では、行列の転置の基本的な考え方と、JavaScriptでの実装方法をわかりやすく解説します。
転置(Transpose)とは?
行列(2次元配列)の転置とは、元の行列の行と列を入れ替えたものを指します。具体的には、元の行列の1行目が転置後の1列目になり、2行目が2列目になる、というように変換されます。
例えば、次のような3×3の行列があるとします。
const arr = [
[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
];
この行列を転置すると、行と列が入れ替わり、以下のような結果になります。
[ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]
JavaScriptで転置を実装するコード例
正方行列(行数と列数が同じ行列)の場合は、対角線を基準にして要素を入れ替えることで転置できます。つまり、arr[i][j] と arr[j][i] の値を交換するだけで実現できます。
以下がその実装コードです。
const arr = [
[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
];
const transpose = arr => {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < i; j++) {
const tmp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = tmp;
}
}
}
transpose(arr);
console.log(arr);
コードのポイント
- 内側のループ条件が
j < iになっているのが重要です。これにより、各要素のペア([i][j]と[j][i])を一度だけ交換し、同じペアを二重に交換してしまうことを防いでいます。 - 一時変数
tmpを使って値を退避させてから入れ替えることで、データの上書きによる不整合を回避しています。 - この関数は引数に渡された配列自体を直接変更する(破壊的メソッドである)ため、元の配列を保持したい場合は事前にコピーしておくことをおすすめします。
実行結果
このコードをコンソールで実行すると、以下の出力が得られます。
[ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]
元の配列では各行が同じ値で構成されていたため、転置後は各列の値がまとまった形になっていることが確認できます。
まとめ
行列の転置は、行と列を入れ替えるシンプルな操作ですが、画像処理やグラフの隣接行列など、さまざまな場面で活用されます。正方行列であれば、二重ループと要素の交換だけで効率的に実装できるので、ぜひ覚えておきましょう。なお、長方形の行列(行数と列数が異なる場合)を扱いたいときは、map メソッドを使って新しい配列を生成する方式が便利です。
-
C#で行列を転置する方法をわかりやすく解説
行列の転置(Transpose)とは行列の転置とは、行列を対角線を軸として反転させる操作のことです。この操作により、行の要素が列へ、列の要素が行へと入れ替わります。具体例を見てみましょう。転置前の行列: 1 2 3 4 5 6 7 8 9 転置後の行列: 1 4 7 2 5 8 3 6 9このように、元の行列の第1行「1 2 3」が転置後には第1列「1 4 7」ではなく「1, 2, 3」が縦方向に並ぶ形となり、行と列が完全に入れ替わっていることが確認できます。C#で行列を転置するサンプルコード以下は、C#で行列の転置を実現するプログラムの例です。ユーザーから行数・列数および各要素を入力しても
-
Pythonで行列を転置する4つの方法を徹底解説!コード例付き
行列の転置とは? 行列の転置(transpose)とは、行列の列と行を入れ替える操作のことです。転置を行うと、元の行列の列が行になり、行が列になります。 具体例を使って理解しましょう。次のような元の行列「x」があるとします。 x = [[1,2],[3,4],[5,6]] この行列「x」には2つの列があり、1つ目の列には 1, 3, 5、2つ目の列には 2, 4, 6 が含まれています。 この行列を転置すると、列が行に入れ替わります。転置後の行列は次のようになります。 x1 = [[1, 3, 5],[2, 4, 6]] このように、転置後の新しい行列「x1」は、元の行列とは値の配置が異なる形