Python3の数値と演算と数学モジュール

まえがき

Pythonにある数値は3つ。

  • 整数型:int型(10進数、2進数、8進数、16進数 )
  • 不動小数点型:float型(倍精度不動小数点)
  • 複素数型:complex型(実部と虚部)

そして、数学モジュールとして「fractions:有理数」がある。

この記事では数値型とその演算についてまとめてみる。

変更履歴

新規作成:2020/03/07

この記事の環境

  • python 3.8.1
  • os: MacOS
  • モジュール:標準モジュール(数学モジュール)

Python3で扱える数値

先に述べたとおり数値型には3種類ある。他の言語にはもっとあるし、PyrhonについてPython2にはもっとあったらしい。これをたったの3つにしたので普通のint型、float型ではないので詳しくみていこう。

int型には最大値はない

Python3のint型には最大値はない。最大値はないが限界はあって、それはメモリによって決まる。限界まで使うことは通常はないと思う。

ちなみに2進数などの表記と変換を以下のように書く。

"""\
型としてはint型かstr型になる。
int型としての表記と、10進数をstr型に変換する方法がある。
演算はint型どうしとして普通にできる。
"""

# 2, 8, 16
int_bin = 0b1000
int_oct = 0o1000
int_hex = 0x1000
# 大文字でもOK
int_bin_big = 0B1000
int_oct_big = 0O1000
int_hex_big = 0X1000
# 演算もOK、正しprint()では10進数で出力される
int_sum = int_bin + int_oct + int_hex
print(int_sum)
# そのまま出力したい場合は変換関数を使う
ch_bin = bin(128)
ch_oct = oct(128)
ch_hex = hex(128)
print(ch_bin)
print(ch_oct)
print(ch_hex)

# _で区切りを付けられる
sep_int_bin = 0b0110_0101_1010
# 関数と文字列メソッドによる変換
ch_sep_int_bin_1 = format(sep_int_bin, 'b')
ch_sep_int_bin_2 = format(sep_int_bin, '#b')
print(ch_sep_int_bin_1)
print(ch_sep_int_bin_2)
数値表記実行結果
数値表記実行結果

Python3の数値の演算

公式ドキュメントの書いてあるとおり。きお付けたいのはPythonの割り算の返り値はint型どうしの割り算で有ってもfloat型になる点。割り切れた場合でも1.0などのfloat型になる。

余りを求めるのも「%」を使い、VBのようにmod()を使ったりしない。「//」で小数点以下を切り捨てられるので状況に合わせて思い出したい。

演算結果備考
x + yx と y の和
x – yx と y の差
x * yx と y の積
x / yx と y の商返り値はfloat型
x // yx と y の商を切り下げたもの切り捨て
x % yx / y の剰余 余り
-xx の符号反転
+xx そのまま
abs(x)x の絶対値または大きさ
int(x)x の整数への変換
float(x)x の浮動小数点数への変換
complex(rel, img)実部 re, 虚部 im の複素数。
c.conjugate()複素数 c の共役複素数
divmod(x, y)(x // y, x % y) からなるペア
pow(x, y)x の y 乗
x ** yx の y 乗

数学モジュールについて

Python3には標準モジュールとして多くの数学モジュールがある。全部は調べないけれど何があるのか知っておきたい。公式ドキュメント丸パクリ。

  • numbers – 数の抽象基底クラス
    • 抽象基底クラス の階層を定義
  • math – 数学関数
    • 数論および数表現の関数
    • 指数関数と対数関数
    • 三角関数
    • 角度変換
    • 双曲線関数
    • 特殊関数
    • 定数
  • cmath – 複素数のための数学関数
    • 極座標変換
    • 指数関数と対数関数
    • 三角関数
    • 双曲線関数
    • 類別関数
    • 定数
  • decimal – 十進固定及び浮動小数点数の算術演算
    • float型よりも利点が多い
  • fractions – 有理数
  • random – 擬似乱数を生成する
  • statistics – 数理統計関数
    • 統計で使うやつ

データサイエンスや機械学習で出番が多そう。

むすび

正直、割り算の返り値がfloat型になること、「//」で切り捨てられることだけ覚えておけば問題ない気がする。数学モジュールは使ってみたい。外部モジュールにも有名なものがあるわけだから、データサイエンス的なことやって見たいです。

コメントする