微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算四舍五入比例的列表

如何解决计算四舍五入比例的列表

必填:

/c

每个输入集中最接近零的数字应为输出中的一位数字。比例必须保持大致恒定,并接受四舍五入误差。

上下文:使用最小的订单将要购买的证券的数量从模型转换为100手的整数。

我可以以非Python的方式强行执行此操作,但我正在寻找要使用的Python函数的指针。我的背景是Java。

解决方法

在Python中,您可以使用numpy进行此类计算。我建议这样的算法:

def process(array):
    order_of_magnitude = np.floor(np.log10(np.min(np.abs(array))))
    return np.round(array*10**(-order_of_magnitude))

说明:

  1. 找到数组中最小元素的量级(无论符号如何)。
  2. 根据此缩放每个元素(或向上缩放)。
  3. 舍入结果

为此,您将需要安装numpy。例如,使用pip或通过Linux发行版。

将您的列表变成如下这样的numpy数组:

array = np.array(your_list)
,

忽略您的示例,我实现了要求

每个输入集中最接近零的数字应为输出中的一位数字。比例必须保持大致恒定,并接受四舍五入误差。

此算法通过最接近零的值的绝对值对数据进行归一化,然后将结果乘以9以使最小的数字保持一位数,从而最小化随后的舍入误差。

def normalize(l):
    import numpy as np
    m = np.min(np.abs(l))
    return np.round(l / m * 9).astype(int)
,

这是基于@ user8408080答案的正确答案。

import numpy as np
def process(array):
    order_of_magnitude = np.floor(np.log10(np.min(np.abs(array)))).astype(int).item()
    return np.round(np.asarray(array)*10**(-order_of_magnitude)).astype(int)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。