kaeken(嘉永島健司)のTech探究ブログ

主に情報科学/情報技術全般に関する知見をポストします。(最近は、特にData Science、機械学習、深層学習、統計学、Python、数学、ビッグデータ)

1章 数を扱う / まずは基本的な演算と数の種類を把握『Pythonからはじめる数学入門』

機械学習を学ぶ際に、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 複素数

Python複素数を扱う場合は、以下のように記述

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']

複素数を使うケースはどれくらいあるのか不明だが、

一応演算できるということを理解しておく。