仅将 numpy 数组舍入为 .5 或 .0

Round a numpy array to .5 or .0 only

我必须将 numpy 数组中的每个元素四舍五入为 .5 或 .0 值。我知道 np.arange() 方法,但是它在这个特定任务中没有用,因为我只能用它来设置等于 1 的精度。

这里有一个我应该做的例子:

x = np.array([2.99845, 4.51845, 0.33365, 0.22501, 2.48523])
x_rounded = some_function(x)

>>> x_rounded
array([3.0, 4.5, 0.5, 0.0, 2.5])

是否有内置方法可以这样做,或者我必须创建它? 如果我应该创建那个方法,有效率吗?我正在处理一个大数据集,所以我想避免迭代每个元素。

import numpy as np
x = np.array([2.99845, 4.51845, 0.33365, 0.22501, 2.48523])
np.round(2 * x) / 2

输出:

array([3. , 4.5, 0.5, 0. , 2.5])