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

NumPyで行列の行ごと・列ごとの合計を求める方法を徹底解説

この記事では、PythonのNumPyライブラリを使って、行列の各行の合計各列の合計をそれぞれ求める方法を解説します。合計の計算にはnp.sum()関数を使用します。

アルゴリズム

手順1: NumPyをインポートする。
手順2: m×n次元のNumPy行列を作成する。
手順3: 各列の合計を求める。
手順4: 各行の合計を求める。

サンプルコード

import numpy as np

a = np.matrix('10 20; 30 40')
print("Our matrix: \n", a)

# 各列の合計(axis=0:縦方向に加算)
sum_of_cols = np.sum(a, axis=0)
print("\nSum of each column: ", sum_of_cols)

# 各行の合計(axis=1:横方向に加算)
sum_of_rows = np.sum(a, axis=1)
print("\nSum of each row: \n", sum_of_rows)

実行結果

Our matrix:
 [[10 20]
 [30 40]]
Sum of each column:  [[40 60]]
Sum of each row:
 [[30]
 [70]]

コードの解説

np.sum()関数は、集計の方向を指定するための引数「axis」を受け取ります。axisには 0 または 1 のいずれかの値を指定します。

  • axis=0:縦方向(下向き)に要素を加算するため、各列の合計が得られます。上の例では 10+30=40、20+40=60 となり、結果は [[40 60]] です。
  • axis=1:横方向に要素を加算するため、各行の合計が得られます。上の例では 10+20=30、30+40=70 となり、結果は [[30] [70]] です。

補足:np.matrixについて

なお、現在のNumPyでは np.matrix非推奨(deprecated)となっています。実際の開発では、通常の2次元配列を作る np.array() を使うことが推奨されます。np.array を使った場合も、np.sum() の使い方とaxisの挙動はまったく同じです。


  1. Pythonで数値の階乗を求める方法を解説!forループとrange関数の使い方

    階乗(factorial)とは、1からその数までのすべての整数を掛け合わせた積のことです。例えば、5の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。 Pythonで指定した数の階乗を求めるには、range()関数を使って1からその数まで繰り返すforループを作成します。ここで注意すべき点は、range()関数は終了値(ストップ値)を含まないという仕様です。そのため、終了値は入力された数値より1大きい値(num+1)を指定する必要があります。 階乗を求めるPythonコードの例 ループ内では、各数値を変数 f に累積的に掛けていきます。この変数 f は初期値として 1 を設

  2. Pythonで自然数の合計を求める3つの方法【while文・for文・sum関数】

    Pythonでは、自然数の合計を求める方法がいくつかあります。この記事では、whileループ、forループ、そして組み込み関数sum()を使った3つの方法を、具体的なコード例とともにわかりやすく解説します。 方法1:whileループを使う whileループを使用すると、変数iの値を1ずつ増やしながら、その値を累積的に加算していくことができます。以下の例では、最初の10個の自然数(1から10まで)の合計を計算しています。 s,i=0,0 n=10 while i<n: i=i+1 s=s+i print ("sum of first 10 natural num