Python 如何有效地将numpy数组的一列舍入到最接近的0.5?
是否有一种有效的方法可以只对numpy数组的一列进行舍入?也就是说,我希望将数字四舍五入到最接近的0.5,这可以通过Python 如何有效地将numpy数组的一列舍入到最接近的0.5?,python,arrays,numpy,rounding,Python,Arrays,Numpy,Rounding,是否有一种有效的方法可以只对numpy数组的一列进行舍入?也就是说,我希望将数字四舍五入到最接近的0.5,这可以通过四舍五入(number*2.0)/2.0实现 假设我有numpy数组tmp,我的目标是将第三列四舍五入。我试过以下几件事: 如果只是四舍五入到某个小数点,我可以使用 tmp[:,2]=np.around(tmp[:,2],1) 但那不是我想要的 我定义了一个函数并尝试沿轴应用: def roundToHalf(数字): 返回轮(数字*2.0)/2.0 tmp[:,2]=np。沿_
四舍五入(number*2.0)/2.0
实现
假设我有numpy数组tmp
,我的目标是将第三列四舍五入。我试过以下几件事:
tmp[:,2]=np.around(tmp[:,2],1)
但那不是我想要的
def roundToHalf(数字):
返回轮(数字*2.0)/2.0
tmp[:,2]=np。沿_轴应用_(圆对半,0,tmp[:,2])
或
tmp[:,2]=roundToHalf(tmp[:,2])
这不起作用,因为我收到一个错误:
*** TypeError: type numpy.ndarray doesn't define __round__ method
在最坏的情况下,我只会使用for循环。但我希望你们能帮我找到一个更平滑的解决方案。你们可以在你们的函数
roundToHalf()
上应用np.vectorize()
,这样它就可以在numpy数组上应用了
roundToHalf\u vect=np.矢量化(roundToHalf)
tmp[:,2]=四舍五入向量(tmp[:,2])
问题在于,您编写函数是为了处理单个数字,而不是数组。可以使用numpy对整个数组进行取整。你的功能就是
import numpy as np
def roundToHalf(array):
return np.around(array * 2.0) / 2.0
如果您输入一个numpy数组,它应该可以工作。下面的例子
In [24]: roundToHalf(np.asarray([3.6,3.8,3.3,3.1]))
Out[24]: array([3.5, 4. , 3.5, 3. ])
与其在
roundToHalf
中内置round
,不如np.around(number*2.0)/2.0
?这对我很有用np.around(number*2.0)/2.0