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