Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2つの行列の要素ごとの差分を計算する方法

この記事では、Pythonを使って2つの行列(ネストされたリスト)の要素ごとの差分を計算して出力する方法を解説します。リストの各要素を反復処理し、zipメソッドを活用することで、シンプルかつ効率的に実装できます。

サンプルコード

以下に具体的な実装例を示します。

my_list_1 = [[3, 4, 4], [4, 3, 1], [4, 8, 3]]
my_list_2 = [[5, 4, 7], [9, 7, 5], [4, 8, 4]]
print("最初のリスト :")
print(my_list_1)
print("2番目のリスト :")
print(my_list_2)

my_result = []

for sub_str_1, sub_str_2 in zip(my_list_1, my_list_2):
    temp_str = []

    for element_1, element_2 in zip(sub_str_1, sub_str_2):
        temp_str.append(element_2 - element_1)
    my_result.append(temp_str)

print("結果は次のとおりです :")
print(my_result)

出力結果

最初のリスト :
[[3, 4, 4], [4, 3, 1], [4, 8, 3]]
2番目のリスト :
[[5, 4, 7], [9, 7, 5], [4, 8, 4]]
結果は次のとおりです :
[[2, 0, 3], [5, 4, 4], [0, 0, 1]]

コードの解説

  • まず、リストの中にリストが入った構造(ネストされたリスト)を2つ定義し、コンソールに表示します。

  • 計算結果を格納するための空のリストを作成します。

  • zipメソッドを使って2つのリストを対応付け、反復処理を行います。これにより、それぞれの行(サブリスト)同士がペアになります。

  • 内側のforループでは、再度zipを使って行内の各要素をペアにし、「2番目のリストの要素 − 1番目のリストの要素」という差分を一時的なリストに順番に追加していきます。

  • 内側のループが完了したら、その一時的なリスト(差分行)を結果リストに追加します。

  • 最後に、計算結果をコンソールに出力します。

補足:より簡潔な書き方

リスト内包表記を使えば、同じ処理をさらに短く記述できます。

my_result = [[e2 - e1 for e1, e2 in zip(row1, row2)]
             for row1, row2 in zip(my_list_1, my_list_2)]

また、数値計算ライブラリのNumPyを利用すれば、配列同士の減算だけで要素ごとの差分を簡単に求めることができ、大規模なデータ処理にも適しています。

import numpy as np
result = np.array(my_list_2) - np.array(my_list_1)
  1. 【Python入門】リスト内の各要素を繰り返し複製する3つの方法

    Pythonでプログラミングをしていると、リスト内の各要素を繰り返し(複製して)新しいリストを作成したい場面があります。例えば、データの水増しやテスト用データの生成などがその一例です。本記事では、リストの要素をそれぞれ2回ずつ繰り返した新しいリストを作成する方法を、3つのアプローチに分けてわかりやすく解説します。方法1:ネストしたforループ(リスト内包表記)を使う最もシンプルで直感的な方法は、リスト内包表記にforループを組み合わせるやり方です。各要素に対して内側のループで2回出力することで、元の要素とその複製を順番に並べた新しいリストを生成できます。サンプルコード# 元のリスト listA

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5