次回より『ヒデログ』とご検索ください

【Python入門】Numpyでの四捨五入・切り上げ・切り捨て

ひでひろ
PythonでNumpyを使うときの四捨五入、切り上げ、切り捨てのメソッドについてソースコードで解説します。
この記事を読むと分かる事、Numpyを使った
  • 四捨五入
  • 切り上げ
  • 切り捨て

四捨五入、切り上げ、切り捨ての一覧

  • numpy.round:四捨五入(偶数への丸目)
  • numpy.ceil:切り上げ
  • numpy.floor:切り捨て
  • numpy.rint:四捨五入(偶数への丸目)
  • numpy.fix:ゼロに近い整数を返す
  • numpy.trunc:整数部分を返す

サンプルコード

import numpy as np
a = np.array([-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0])

# 四捨五入(偶数への丸目)
print(np.round(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-2.   -2.   -0.   -0.   0.   0.   2.   2.   2.]

# 切り上げ
print(np.ceil(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-1.   -1.   -0.   -0.   1.   1.   2.   2.   2.]

# 切り捨て
print(np.floor(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-2.   -2.   -1.   -1.   0.   0.   1.   1.   2.]

# 四捨五入(偶数への丸目)
print(np.rint(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-2.   -2.   -0.   -0.   0.   0.   2.   2.   2.]

# ゼロに近い整数
print(np.fix(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-1.   -1.   -0.   -0.   0.   0.   1.   1.   2.]

# 整数部分を返す
print(np.trunc(a))
# [-1.7, -1.5, -0.5, -0.2, 0.2, 0.5, 1.5, 1.7, 2.0]
# [-1.   -1.   -0.   -0.   0.   0.   1.   1.   2.]
実行結果
# round
[-2. -2. -0. -0.  0.  0.  2.  2.  2.]
# ceil
[-1. -1. -0. -0.  1.  1.  2.  2.  2.]
# floor
[-2. -2. -1. -1.  0.  0.  1.  1.  2.]
# rint
[-2. -2. -0. -0.  0.  0.  2.  2.  2.]
# fix
[-1. -1. -0. -0.  0.  0.  1.  1.  2.]
# trunc
[-1. -1. -0. -0.  0.  0.  1.  1.  2.]

四捨五入(偶数への丸目)の注意点

四捨五入は値がx.5(xは任意の実数)の時は「偶数への丸目」であることを注意しましょう。

偶数への丸め(round to even)は、端数が0.5より小さいなら切り捨て、端数が0.5より大きいならは切り上げ、端数がちょうど0.5なら切り捨てと切り上げのうち結果が偶数となる方へ丸める。偶数への丸目

ひでひろ
これではちょっと分かりにくいのでもう少し例を示して解説します
x.5が偶数なら切り上げ、結果が奇数なら切り捨てになります。つまり、x.5の時は常に結果が偶数になります

偶数への丸目の例

  • -4.5→-4.0:切り上げ
  • -3.5→-4.0:切り捨て
  • -2.5→2.0:切り上げ
  • -1.5→2.0:切り捨て
  • 1.5→2.0:切り上げ
  • 2.5→2.0:切り捨て
  • 3.5→4.0:切り上げ
  • 4.5→4.0:切り捨て

小数点以下での四捨五入

numpy.roundでは小数点以下でも四捨五入できます。

numpy.round(x,decimals=y)とすることでxを小数点yの数値にするように四捨五入(偶数への丸目)になるようにします。

import numpy as np

a=[0.17,0.12]
b=[0.017,0.012]

print(np.round(a,decimals=1))
# [0.2 0.1]
print(np.round(b,decimals=2))
# [0.02 0.01]
実行結果
[0.2 0.1]
[0.02 0.01]

まとめ

PythonでNumpyを使うときの四捨五入切り上げ切り捨てのメソッドについてソースコードでしました。四捨五入は偶数への丸目であることも注意しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です