機械学習を学ぶ際に、Pythonでの数式表現でつまづくことがある。
そこで、
『Pythonからはじめる数学入門』
をコツコツ通読&コマンドを打つことで、
数式表現に慣れていく。
まずは、
基本的な演算と数の種類を把握。
数値処理に強いPythonっぽいメソッドもある。
9. 数値と数学モジュール — Python 3.6.3 ドキュメント
1章 数を扱う 1.1 基本数学演算 1.2 ラベル:名前に数を割り当てる 1.3 さまざまな種類の数 1.3.1 分数を扱う 1.3.2 複素数 1.4 ユーザ入力を受け取る 1.4.1 例外と不当入力の処理 1.4.2 分数と複素数を入力 1.5 数学を行うプログラムを書く 1.5.1 整数の因数を計算する 1.5.2 乗算表を生成する 1.5.3 測定単位を変換する 1.5.4 2次方程式の解を求める 1.6 学んだこと 1.7 プログラミングチャレンジ 問題1-1 奇数偶数自動判別プログラム 問題1-2 乗算表生成器の拡張 問題1-3 単位変換プログラムの拡張 問題1-4 分数電卓 問題1-5 ユーザに脱出能力を与える
1章 数を扱う 1.1 基本数学演算 加算/減算/乗算/除算
>>> 3 + 2 5 >>> 3 - 2 1 >>> 3 * 2 6 >>> 3 / 2 1.5
小数点以下を除いた整数のみ返す 整除除算。負数の場合に注意。
>>> 3 // 2 1 >>> -3 // 2 -2
余りだけ返す 剰余
>>> 9 % 2 1
指数演算
>>> 2 ** 10 1024 9の平方根 >>> 9 ** (1/2) 3.0 8の立方根 >>> 8 ** (1/3) 2.0
1.2 ラベル:名前に数を割り当てる
変数のことをこの書籍だけは「ラベル」と呼ぶらしい。特殊すぎるので無視。
1.3 さまざまな種類の数
数の種類をtype()関数で表示
>>> type(3) <class 'int'> >>> type(3.0) <class 'float'>
int()とfloat()で相互変換
>>> int(3.0) 3 >>> float(3) 3.0
1.3.1 分数を扱う
分数を扱うには、fractionsモジュールが必要。
9.5. fractions — 有理数 — Python 3.6.3 ドキュメント
>>> from fractions import Fraction >>> f = Fraction(3,4) >>> f Fraction(3, 4) >>> Fraction(3,4) + Fraction(3,4) Fraction(3, 2) >>> Fraction(3,4) + Fraction(1,4) Fraction(1, 1)
1.3.2 複素数
「3 + 2i(実部3 +虚部2)」の記述方法 >>> a = 3 + 2j >>> type(a) <class 'complex'> >>> b = complex(3,2) >>> type(b) <class 'complex'> >>> a + b (6+4j) >>> x = 2 +3j >>> x.real //実部 2.0 >>> x.imag //虚部 3.0 >>> x.conjugate() //共役複素数 (2-3j) >>> (x.real ** 2 + x.imag ** 2 ) ** 0.5 // 複素数の大きさ 3.605551275463989 >>> abs(x) // 複素数の大きさ 3.605551275463989
その他複素数関連はcmathモジュールにある
9.3. cmath — 複素数のための数学関数 — Python 3.6.3 ドキュメント
>>> import cmath >>> dir(cmath) ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
複素数を使うケースはどれくらいあるのか不明だが、
一応演算できるということを理解しておく。