You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用Pandas/Numpy实现迭代/递归计算?以斐波那契序列为例

Pandas & NumPy实现高效迭代/递归计算(替代Python for循环)

当然可以!用NumPy和Pandas来做这类迭代/递归计算,完全能避开低效的Python原生for循环——核心就是利用它们的向量化运算特性,让计算在底层以优化过的C代码执行,速度快得多。我就结合你提到的斐波那契序列例子,给你详细讲讲怎么实现。

一、NumPy实现高效斐波那契计算

1. 计算单个斐波那契数(矩阵快速幂法)

如果要计算大序号的斐波那契数(比如第1000个),矩阵快速幂是非常高效的方案,时间复杂度为O(log n)。原理是斐波那契的递推关系可以转化为矩阵幂运算,直接用NumPy的线性代数模块就能实现:

import numpy as np

def fibonacci_single(n):
    if n <= 0:
        return 0
    # 斐波那契递推对应的转换矩阵
    transform_mat = np.array([[1, 1], [1, 0]], dtype=np.int64)
    # 计算矩阵的n-1次幂
    mat_power = np.linalg.matrix_power(transform_mat, n - 1)
    # 初始状态为[F(1), F(0)] = [1, 0],取第一个元素就是F(n)
    return mat_power[0, 0]

# 测试:计算第10个斐波那契数
print(fibonacci_single(10))  # 输出55

2. 生成前N个斐波那契序列(向量化递推)

如果要生成连续的斐波那契序列,用NumPy的切片赋值就能实现完全向量化的递推,不用写任何Python循环:

def fibonacci_sequence(n):
    if n == 0:
        return np.array([])
    elif n == 1:
        return np.array([0])
    # 初始化存储序列的数组
    fib_arr = np.zeros(n, dtype=np.int64)
    fib_arr[1] = 1
    # 向量化递推:F(n) = F(n-1) + F(n-2)
    fib_arr[2:] = fib_arr[1:-1] + fib_arr[:-2]
    return fib_arr

# 测试:生成前10个斐波那契数
print(fibonacci_sequence(10))  # 输出[ 0  1  1  2  3  5  8 13 21 34]

这里的切片运算会在NumPy底层批量执行,比Python循环快几个数量级,数据量越大优势越明显。

二、结合Pandas处理DataFrame中的递推计算

如果你的初始数据存在DataFrame中,最优思路是先把数据提取为NumPy数组,用向量化方法完成计算后,再把结果放回DataFrame。比如基于DataFrame的初始值生成斐波那契序列:

import pandas as pd

# 构造包含初始值的DataFrame
df = pd.DataFrame({'initial_fib': [0, 1]})
# 先扩展到目标长度(比如生成前10个元素)
target_length = 10
# 用NumPy生成完整序列
full_fib = fibonacci_sequence(target_length)
# 将结果赋值给DataFrame的新列
df = df.reindex(range(target_length))
df['fib_sequence'] = full_fib

print(df)

如果是多组独立的递推计算(比如DataFrame的每行对应一组初始值),可以把每组数据转成NumPy数组批量处理,避免使用Pandas的逐行apply(后者本质还是Python循环,效率低)。

三、为什么优先选择向量化而非Python循环?

  • 速度优势:NumPy的向量化运算基于优化过的C代码,比Python解释型循环快10~100倍,数据量越大差距越显著。
  • 可读性更强:向量化代码直接对应数学逻辑(比如fib_arr[2:] = fib_arr[1:-1] + fib_arr[:-2]一眼就能看出斐波那契递推关系)。
  • 内存效率高:NumPy数组的内存布局更紧凑,比Python列表节省内存,适合处理大规模数据。

内容的提问来源于stack exchange,提问作者Tim Robinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:10:16