我的目标是为包含非常大整数的numpy数组寻找np.mod(np.array[int], some_number)。Some_number是理性的,但通常不是一个精确的十进制小数。我想确保模块尽可能准确,因为我需要在后面的步骤中将结果保存为直方图,所以浮点精度引起的任何错误都可能意味着值最终会被放到错误的bin中。
我知道浮点的模块化功能受到浮点精度的限制,所以我对使用np.mod(array[int], float)犹豫不决。然后,我看到python库的分数模块。有人能给出建议吗?通过np.mod(np.array[int], Fraction(int1, int2))获得的结果是否比使用浮点数更准确?如果没有,解决这一问题的最佳办法是什么?
发布于 2018-12-04 11:40:43
所以你有一个分数some_number=n/d
计算模块就像执行这个分支一样:
a = q*(n/d) + (r/d)余数是分子r的一个分数。它可以写成这样:
a*d = q * n + r您遇到的问题是a*d可能溢出。但问题可以写成这样:
a = q1 * n + r1
d = q2 * n + r2
a*d = (q1*q2*n+q1*r2+q2*r1) * n + (r1*r2)在n/d介于10 ~ 100,n>d,q2=0,r2=d的情况下,算法为
如果是放进垃圾箱,你不需要第三步。
https://stackoverflow.com/questions/53573266
复制相似问题