Pythonリスト型二次元配列の転置:行と列を入れ替える方法


 

Pythonでデータ処理を行う際、**二次元配列(リストのリスト)**の行と列を入れ替える「転置」操作は頻繁に必要とされます。この記事では、Pythonのリスト型二次元配列を効率的に転置するさまざまな方法を、短いサンプルコードとともに解説します。


 

転置とは?

 

転置とは、行列の行と列を入れ替える操作のことです。例えば、以下の3×2の二次元配列があるとします。

[[1, 2],
 [3, 4],
 [5, 6]]

これを転置すると、2×3の配列になり、以下のようになります。

[[1, 3, 5],
 [2, 4, 6]]

データ分析や機械学習の分野では、データの形式を変換する際によく用いられます。


 

Pythonで二次元配列を転置する方法

 

Pythonで二次元配列を転置するには、いくつかの方法があります。それぞれ見ていきましょう。

 

1. zip()関数を使う方法(最もPythonic)

 

Pythonで二次元配列を転置する最も一般的で推奨される方法は、組み込みのzip()関数を使うことです。zip()は複数のイテラブルの要素をまとめてくれます。これに*演算子(アンパック演算子)を組み合わせることで、簡単に転置が実現できます。

Python
 
original = [[1, 2],
            [3, 4],
            [5, 6]]

transposed = list(zip(*original)) # zipオブジェクトをリストに変換

print(transposed)
# 出力: [(1, 3, 5), (2, 4, 6)]

zip()はタプルのリストを返しますが、必要であればさらにlist()でリストのリストに変換することも可能です。

Python
 
original = [[1, 2],
            [3, 4],
            [5, 6]]

transposed_list = [list(row) for row in zip(*original)]

print(transposed_list)
# 出力: [[1, 3, 5], [2, 4, 6]]

この方法は非常に簡潔で効率的であり、Pythonらしい記述と言えます。

 

2. リスト内包表記を使う方法

 

zip()関数を使わずに、リスト内包表記を使って手動で転置することも可能です。この方法は、特に特定の列だけを抽出したい場合など、より細かい制御が必要な場合に役立ちます。

Python
 
original = [[1, 2],
            [3, 4],
            [5, 6]]

# 0列目、1列目…と順に新しい行を作成
transposed = [[row[i] for row in original] for i in range(len(original[0]))]

print(transposed)
# 出力: [[1, 3, 5], [2, 4, 6]]

この方法はzip()に比べてやや冗長ですが、処理の仕組みがより分かりやすいかもしれません。

 

3. NumPyを使う方法(数値計算向け)

 

もし数値計算が主な目的であれば、Pythonの科学計算ライブラリであるNumPyを使用するのが最も強力で効率的です。NumPyの配列(ndarray)は、多次元配列の操作に特化しており、転置も非常に簡単に行えます。

Python
 
import numpy as np

original_np = np.array([[1, 2],
                        [3, 4],
                        [5, 6]])

transposed_np = original_np.T # .T属性で簡単に転置

print(transposed_np)
# 出力:
# [[1 3 5]
#  [2 4 6]]

NumPyを使用すると、大規模な配列の転置が非常に高速に行えますが、NumPyのインストールが必要です。


 

まとめ

 

Pythonで二次元配列(リストのリスト)を転置する方法はいくつかありますが、

  • 最もPythonicで推奨されるのはzip(*array)を使う方法

  • リスト内包表記で手動で転置することも可能

  • 数値計算が主ならNumPyが最も効率的

これらの方法を使いこなすことで、Pythonでのデータ操作がよりスムーズになります。状況に応じて最適な方法を選択してください。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座