python - Pandas Series 参数函数内存

标签 python pandas memoization mutable

我想内存一个带有可变参数的函数(Pandas Series 对象)。有什么办法可以做到这一点?

这是一个简单的斐波那契示例,参数是 Pandas 系列,其中第一个元素代表序列的索引。

例子:

from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
    if n.iloc[0] == 1 or n.iloc[0] == 2:
        return 1
    min1 = n.copy()
    min1.iloc[0] -=1
    min2 = n.copy()
    min2.iloc[0] -= 2 
    return fib(min1) + fib(min2)

调用函数:

fib(pd.Series([15,0]))

结果:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

预期用途更复杂,所以我发布了这个无用但简单的示例。

最佳答案

几个选项:

  • 将可变对象转换为不可变对象(immutable对象),例如字符串或元组。
  • 创建可变对象的散列并将其用作备忘录字典键。哈希冲突的风险。
  • 创建一个实现 __hash__() 函数的不可变子类。

关于python - Pandas Series 参数函数内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49341568/

相关文章:

python - 一种简洁明了的图像大小调整算法

python - 如何在 groupby 之后为 pandas 中的每个组补充缺失的日期?

python - 数据框太长应用行函数

python - Pandas 从列中删除所有特殊字符

Ruby Pascal 的带内存的三角形生成器

memoization - 在 Rust 中的多个函数调用中保持变量存活

python - 在滑动窗口中应用 np.where

Python杀死用户拥有的所有进程

python - 如何使用 x = A 列,但颜色/色调 = B 列分类变量进行绘图

haskell - 如何在 Haskell 中记住一个以列表作为参数或返回值的函数?