进一步解释我的标题:我有一系列浮点数我想要舍入,但是,我想将数字四舍五入到一个不是最接近整数的数字。例如,让我们说我想要将数字四舍五入到最接近的2的倍数。这就是我所拥有的:
Temp = np.around(data,0)
data
是浮点数组。数字四舍五入到最接近的整数,但我希望它们四舍五入到最接近的2的倍数。我的目标:
0.9 - > 0
1.1 - > 2
等
谢谢!
答案 0 :(得分:3)
两个中的两个是直截了当的:
x = np.array([0.9, 1.1, 10.2, 7.4])
2*np.round(x/2) # array([ 0., 2., 10., 8.])
但这并不是一种普遍的做法。例如,没有obvoius"舍入到最近的Fibonacci数"。在给定函数2
的情况下,考虑多个f(x)=2*x
的公式:1)首先应用f
的倒数(在这种情况下除以),然后是round
, 3)然后将f
应用于结果。为了实现这一点,f
必须存在,具有反转,结果也必须是int
;所以它只适用于一些功能。
答案 1 :(得分:1)
以下是一种方法:
import math
data = [0.9, 1.1, 10.2, 7.4]
rounded_numbers = []
for num in data:
rounded_up_num = math.ceil(num)
if rounded_up_num % 2 == 0:
rounded_num = rounded_up_num
else:
rounded_num = math.floor(num)
rounded_numbers.append(int(rounded_num))
print rounded_numbers # [0, 2, 10, 8]