当前位置: 首页 > 知识库问答 >
问题:

在Python中高效分割几何级数(Pythonic方式)

梁丘俊人
2023-03-14

我正在尝试实现一个涉及几何级数(拆分)的计算。有什么有效的方法吗。数据集有数百万行。我需要“交易数量”栏

turtle=2(用户定义)

base_quantity=1(用户自定义

    def turtle_split(row):
        if row['Action'] == 'BUY':
            return base_quantity * (turtle ** row['Marker'] - 1) // (turtle - 1)
        else:
            return 0
    df['Traded_quantity'] = df.apply(turtle_split, axis=1).round(0).astype(int)

对于第0行,Traded_quantity应该为零(因为标记为零)

对于第一行,Traded_quantity应该是(1x1)(1x2)=3(标记2将被分成1和1,第一个1将与base_quantity相乘

对于第二行,Traded_quantity应该为零(因为标记为零)

对于第三行,交易数量应为(2x2)=4(标记1将乘以第1行的最后一次分割,即2x2)

对于第四行,交易数量应为零(因为标记为零)

对于第五行,交易数量应为(4x2)(4x2x2x2)(4x2x2x2x2x2)=56(标记3将被分为1,1和1,第一个1将与第三行的最后一次分割相乘)

对于第6行,交易数量应为(32x2)(32x2x2)(32x2x2x2)(32x2x2x2x2x2)(32x2x2x2x2x2x2)=8128

每当有买入时,交易数量将使用Traded_quantity次海龟的最后一批来计算。

结果表明,当标记中没有零时,代码正在生成正确的交易数量。一旦有两个零的间隙,几何级数将没有帮助,我将要求前面的fig(来自缓存)重新计算交易的q。尝试使用lru缓存进行递归,没有效果。

共有1个答案

邹晟睿
2023-03-14

这应该行得通

def turtle_split(row):
        global base_quantity
        if row['Action'] == 'BUY':
            summation = base_quantity * (turtle ** row['Marker'] - 1) // (turtle - 1)
            base_quantity = base_quantity * (turtle ** (row['Marker'] - 1))*turtle
            return summation
        else:
            return 0
 类似资料:
  • 问题内容: 我想要达到的目标是这样的: 所以我搜索并找到了这个完美的正则表达式: 作为下一个逻辑步骤,我尝试了: 为什么这不起作用,如何从python中的链接问题中获得结果? 编辑:解决方案摘要 我用一些测试用例测试了所有提供的解决方案: 总而言之,您可以说@kalefranz的解决方案与问题不符(请参阅最后一种情况),而@casimir et hippolyte的解决方案占用了一个空格,因此违反

  • 6.5 几种高级数据结构* 以上介绍的各种数据集合体都是 Python 直接提供的数据类型,属于基本的数据结构。 本节介绍几种高级数据结构,编程语言不直接支持它们的表示和操作,需要程序员自己实现。

  • 问题内容: 在这里处理一些矩阵代数。有时我需要将一个可能为奇数或病态的矩阵求逆。我知道简单地做到这一点是pythonic的: 但不确定效率如何。这会更好吗? numpy.linalg是否可以简单地执行我所要求的测试? 问题答案: 因此,根据此处的输入,我将显式测试标记为原始代码块作为解决方案: 令人惊讶的是,numpy.linalg.inv函数不执行此测试。我检查了一下代码,发现它经过了所有处理,

  • 问题内容: 在以下字符串中,我如何以以下方式拆分字符串 问题答案: 有一个可选的第二个参数,它是要拆分多少次。我们使用切片删除列表中的最后一项(剩余部分)。 例如:

  • Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。 注意,这里所说的方法,指的是字符串类型 str 本身所提供的,由于涉及到类和对象的知识,初学者不必深究,只需要知道方法的具体用法即可。 从本节开始,将给大家介绍一些常用的字符串类型方法,本节先介绍分割字符串的 split() 方法。 split() 方

  • 本文向大家介绍Python高级复数算法,包括了Python高级复数算法的使用技巧和注意事项,需要的朋友参考一下 示例 该模块cmath包括使用复数的附加功能。 此模块可以计算弧度的复数相位: 它允许在复数的笛卡尔(矩形)和极坐标表示之间进行转换: 该模块包含的复杂版本 指数函数和对数函数(通常log是自然对数和log10十进制对数): 平方根: 三角函数及其反函数: 双曲函数及其反函数: