bla*_*bug 5 python numpy vectorization
我想截断numpy数组中的float值,例如。
2.34341232 --> 2.34
Run Code Online (Sandbox Code Playgroud)
我阅读了截断浮点后的内容,但其中有一个浮点。我不想在numpy数组上运行循环,这将非常昂贵。numpy中是否有任何内置方法可以轻松做到这一点?我确实需要将输出作为浮点数而不是字符串。
shx*_*hx2 10
使用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])
Run Code Online (Sandbox Code Playgroud)
试用此修改后的numpy.trunc()版本。
import numpy as np
def trunc(values, decs=0):
return np.trunc(values*10**decs)/(10**decs)
Run Code Online (Sandbox Code Playgroud)
可悲的是,该numpy.trunc函数不允许十进制截断。幸运的是,将参数乘以结果除以十的幂即可得出预期的结果。
vec = np.array([-4.79, -0.38, -0.001, 0.011, 0.4444, 2.34341232, 6.999])
trunc(vec, decs=2)
Run Code Online (Sandbox Code Playgroud)
返回:
>>> array([-4.79, -0.38, -0. , 0.01, 0.44, 2.34, 6.99])
Run Code Online (Sandbox Code Playgroud)