Python でマトリックスを出力する

Manav Narula 2023年1月30日
  1. Python で for ループを使用して行列を出力する
  2. Python でリスト内包法を使用して行列を出力する
Python でマトリックスを出力する

行列は、データ表現や複数の一次方程式の解法のための数学や統計で非常によく使用されます。プログラミングでは、2D 配列は行列として扱われます。

Python には、行列に対してさまざまな操作を実行するために使用できる多くの関数とクラスがあります。このチュートリアルでは、Python で行列を出力する方法を学習します。

次のコードでは、すべての角かっこを使用し、適切な間隔を指定せずに、Python で 2 次元配列を通常どのように出力するかを示します。

import numpy as np

a = np.array([[1, 2, 3], [3, 4, 5], [7, 8, 9]])

print(a)

出力:

[[1 2 3]
 [3 4 5]
 [7 8 9]]

以下で説明する方法では、配列をクリーンな行列タイプの形式で出力します。

Python で for ループを使用して行列を出力する

このメソッドは、for ループを使用してマトリックスを反復処理し、適切にフォーマットした後、各行を個別に出力します。次のコードはその方法を示しています。

import numpy as np

a = np.array([[1, 2, 3], [3, 4, 5], [7, 8, 9]])

for line in a:
    print("  ".join(map(str, line)))

出力:

1  2  3
3  4  5
7  8  9

行全体を文字列に変換する map 関数を使用してから、この行全体に join 関数を適用して、すべてを単一の文字列に変換し、指定された区切り文字で要素を区切ります。

Python でリスト内包法を使用して行列を出力する

リスト内包表記は、1 行のコードでリストを操作するための簡潔でエレガントな方法を提供します。

この方法も for ループを使用しますが、前の方法のように、従来の方法よりも少し速いと考えられています。

例として次のコードを取り上げます。

import numpy as np

a = np.array([[1, 2, 3], [3, 4, 5], [7, 8, 9]])

print("\n".join(["".join(["{:4}".format(item) for item in row]) for row in a]))

出力:

   1   2   3
   3   4   5
   7   8   9

上記のコードは前の方法とほぼ同じ関数を使用していますが、より効率的かつ 1 行で実行できます。他の主な違いは、文字列要素間に必要な間隔を提供するためにここで使用される format() 関数です。

この方法を採用する別の方法を以下に示します。ここでは、コードを個別の行に分割し、マトリックスをテーブルのような構造に似せようとします。

import numpy as np

a = np.array([[1, 2, 3], [3, 4, 5], [7, 8, 9]])

s = [[str(e) for e in row] for row in a]
lens = [max(map(len, col)) for col in zip(*s)]
fmt = "\t".join("{{:{}}}".format(x) for x in lens)
table = [fmt.format(*row) for row in s]
print("\n".join(table))

出力:

1	2	3
3	4	5
7	8	9
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Matrix