【NumPy入門 np.round】配列の要素を四捨五入する方法と、0.5は0か1か問題

この記事では「NumPyの配列の各要素を四捨五入する関数」np.roundについて紹介します。

np.roundで大切なのは二つ

  1. 第二引数で四捨五入する桁をコントロールできる
  2. 実は四捨五入ではなく偶数丸め

この二つがわかるのならば、この記事の内容は既にわかっていると思います。

「何いってんだ?」って思ったあなた!ぜひこの記事でnp.roundの使い方を覚えちゃいましょう!

np.round関数の使い方

※この記事のコードは、jupyter notebookjuputer labを使って書かれています。
コードを試すときは是非これらやIPythonを使ってみてください。

基本的な使い方

np.round関数は四捨五入を行う関数です。

例えば浮動小数点数があったとき、これを0か1に丸めてくれます。

第二引数decimalsで小数点第何位を四捨五入するかをコントロール

round関数は第二引数を指定することで、小数点第何位で四捨五入するかを変更する事ができます。

何も指定しないと0になっています(小数点以下四捨五入)が、例えば1や2といった値を指定する事もできます。

decimals=1で小数点第2位を四捨五入する

decimals=2で小数点第3位を四捨五入する

np.round(0.5)は1?0?

ここでちょっとした脱線です。

四捨五入と表現するからには、普通0.5は1になると思いますよね。

でも実は……

このように、0の方に丸めてしまうんです。

「じゃあNumPyでは~.5は全部小さい方になるんだ」

って考えたくなるのですが、これも実は間違い。

上のように、今度は大きい方に丸めています。

これはどういうことかというと、「丸めたときに偶数になるようになっている」ということらしいです。

これを「偶数丸め」「五捨五入」「銀行丸め」などと言うそうです。

利点もあるようですが、意外な落とし穴になりそうな仕様ですね。

参考:

まとめ

この記事では、numpy配列の要素を四捨五入する関数、np.roundについて解説しました。

基本的には小学校でならった四捨五入の通りですが、「0.5が0になる」のような落とし穴もあるようです。

こういう細かい仕様は覚えておくと良いんですが、結構忘れることもあると思います。

多くの場合、忘れても調べてすぐ使いこなせればいいので、その度にこの記事を思い出していただけると嬉しいです。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説