Python初心者が迷わない!変数名を大文字にするだけで行列コードが劇的に読みやすくなる理由

こんにちは。ゆうせいです。

みなさんはPythonでプログラムを書いているとき、変数名に悩んだことはありませんか。適当に a や b と名付けて、後から読み返したときに「これって何の中身だっけ?」と頭を抱えた経験があるはずです。

特にデータ分析や機械学習の世界では、扱うデータの形によって名前の付け方に明確なルールが存在します。今回は、数学的な背景を踏まえた変数名のマナーについて、一緒に学んでいきましょう。

なぜ行列の変数名は大文字で書くのか

数学の授業を思い出してみてください。ベクトルは小文字の \vec{a} で書き、行列は A B といった大文字で書くのが一般的ですよね。プログラミングの世界でも、この数学的な慣習をそのまま取り入れることが推奨されています。

スカラ・ベクトル・行列の違いを例えるなら

専門用語が出てきましたが、難しく考える必要はありません。お弁当屋さんを例にして解説しますね。

  1. スカラこれは単なる数値のことです。お弁当1個の値段が 500 円なら、その 500 という数字そのものがスカラです。
  2. ベクトル(小文字で表記)これは数値が並んだリストのことです。お弁当、お茶、割り箸のそれぞれの個数が並んだ注文リストをイメージしてください。
  3. 行列(大文字で表記)これは縦と横に数値が並んだ表のことです。月曜日から金曜日まで、それぞれの日のお弁当とお茶の注文個数をまとめた一覧表ですね。

単なる数字なら小文字、表形式のデータなら大文字。このルールを守るだけで、コードを見た瞬間に「あ、これは表データなんだな」と直感的に理解できるようになります。

Pythonとpandasでの具体的な書き方

実際にコードを見て、書き方の違いを体感してみましょう。

リスト(ベクトル)を扱う場合

数値の並びであるリストを作成するときは、小文字を使います。

prices = [500, 150, 10]

行列(NumPyやPandas)を扱う場合

一方で、複数のデータが縦横に並ぶ行列(Matrix)を扱うときは、大文字の X などを使います。

import numpy as np
import pandas as pd

# NumPyでの行列作成
X = np.array([[1, 2], [3, 4], [5, 6]])

# pandasでのデータフレーム(行列)作成
df_sales = pd.DataFrame({
    'lunch': [10, 12, 15],
    'tea': [5, 8, 7]
})
X_data = df_sales.values


どうでしょうか。大文字の X が出てくるだけで、なんとなく「強そうなデータ(表データ)」が代入されている感じがしませんか。

大文字を使うメリットとデメリット

このルールを取り入れる際のポイントを整理しましょう。

メリット

  • 数学の公式をコードに落とし込む際、数式とコードの見た目が一致するのでバグが減ります。
  • チーム開発において、他の人がコードを読んだときにデータの構造を一瞬で把握できます。
  • 自分自身が数日後にコードを読み返したとき、迷子になりません。

デメリット

  • Pythonの標準的なコーディング規約(PEP8)では、変数名は基本的に小文字が推奨されています。そのため、行列以外でも大文字を使いすぎると、逆に読みづらくなる恐れがあります。
  • シフトキーを押しながら入力する手間が、ほんの少しだけ増えます。

学習を深めるためのステップ

さて、行列の変数名を大文字にする大切さは伝わりましたか。もし「自分ならどう名付けるだろう」と迷ったら、まずは基本に忠実に、表データには大文字を使ってみてください。

これからの学習の指針を提案します。

  1. 数学における行列の計算方法を、基礎だけでもおさらいしてみましょう。
  2. NumPyやpandasの公式ドキュメントを読み、サンプルコードで大文字がどう使われているか観察してください。
  3. 実際に自分でデータ分析のコードを書き、変数名に魂を込めてみましょう。

次は、実際にこの大文字の変数を使って、行列の掛け算をプログラミングする方法です。

数学の教科書で見ると難しそうな行列の計算も、Pythonの手を借りれば驚くほどシンプルに記述できます。

行列の掛け算とは?

まずは、行列の掛け算について簡単におさらいしましょう。専門用語では「積(せき)」と呼びます。

組み合わせの「総当たり計算」とイメージして

行列の掛け算は、単なる数字の掛け算とは少し違います。

例えば、 A =「商品ごとの単価表(お弁当 500円、お茶 150円)」 B =「日ごとの注文数表(月曜日はお弁当10個とお茶5本、火曜日は…)」 という2つの表があったとします。

この2つを掛け合わせることで、「月曜日の合計金額」「火曜日の合計金額」といった新しい表を作り出すのが行列の掛け算です。

左側の表の「横一行」と、右側の表の「縦一列」をそれぞれ掛け算して足し合わせるという、ちょっと特殊なルール(内積といいます)で動いています。

NumPyとpandasで書く行列の掛け算

それでは、実際にコードを書いてみましょう。Pythonでこれを行うには、NumPy(ナンパイ)というライブラリを使うのが最も一般的です。

NumPyを使ったスマートな書き方

NumPyでは、 @ という記号を使うだけで行列の掛け算ができてしまいます。

import numpy as np

# 行列A(2行3列のデータ)
A = np.array([[1, 2, 3], [4, 5, 6]])

# 行列B(3行2列のデータ)
B = np.array([[7, 8], [9, 10], [11, 12]])

# 行列の掛け算を実行
C = A @ B

どうですか。 C = A \times B という数式そのままの見た目で書けていますよね。

pandasでの計算方法

データ分析の現場でよく使うpandasでも、同様の操作が可能です。

import pandas as pd

# データフレームを定義(大文字で始めるのがコツ)
DF_A = pd.DataFrame([[1, 2], [3, 4]])
DF_B = pd.DataFrame([[5, 6], [7, 8]])

# dotメソッド、または@記号で掛け算
Result = DF_A.dot(DF_B)

ソースコードの直後に余計な空行は入れないようにしましょう。

あなたのコードがより美しくなることを応援しています。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。