web-dev-qa-db-ja.com

小数桁数を切り捨てる浮動小数点数の配列

Numpy配列内のfloat値を切り捨てたいです。

2.34341232 --> 2.34 

私は投稿 浮動小数点の切り捨て を読みましたが、1つの浮動小数点数についてです。 numpy配列でループを実行したくないので、かなり高価になります。これを簡単に行うことができるnumpy内の組み込みメソッドはありますか?文字列ではなく浮動小数点数として出力する必要があります。

7
blackbug

使用する - numpy.round

import numpy as np
a = np.arange(4) ** np.pi
a
=> array([  0.        ,   1.        ,   8.82497783,  31.5442807 ])
a.round(decimals=2)
=> array([  0.  ,   1.  ,   8.82,  31.54])
4
shx2

numpy.trunc() のこの修正版を試してください。

import numpy as np
def trunc(values, decs=0):
    return np.trunc(values*10**decs)/(10**decs)

悲しいことに、numpy.trunc関数は、10進数の切り捨てを許可しません。幸いなことに、引数を掛けてその結果を10の累乗で割ると、期待される結果が得られます。

vec = np.array([-4.79, -0.38, -0.001, 0.011, 0.4444, 2.34341232, 6.999])

trunc(vec, decs=2)

これは次を返します:

>>> array([-4.79, -0.38, -0.  ,  0.01,  0.44,  2.34,  6.99])
8
Traxidus Wolf