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

如何对数量可变的多个NumPy矩阵一次性完成连乘运算

NumPy 动态长度矩阵列表批量连乘实现方案

完全可以实现,NumPy本身就提供了对应支持,不需要手写循环遍历计算,以下是两种可直接使用的方案,都支持Number变量动态调整,只要列表内矩阵维度满足乘法匹配规则即可正常运行:

  • 方案1:优先使用np.linalg.multi_dot(推荐)
    这是NumPy专门为多矩阵连乘设计的内置函数,会自动优化矩阵乘法的计算顺序,矩阵数量多、维度大时运算效率更高,直接传入存储矩阵的列表即可完成所有矩阵的依次相乘:

    import numpy as np
    
    Number = 10
    mylist = [np.random.randint(1, 5, size=(4, 4)) for i in range(Number)]
    # 计算顺序为 mylist[0] @ mylist[1] @ mylist[2] @ ... @ mylist[-1]
    dot_result = np.linalg.multi_dot(mylist)
    
  • 方案2:functools.reduce配合@运算符
    如果你的NumPy版本过低没有multi_dot,可以用Python标准库的reduce方法累计执行矩阵乘法,逻辑是把矩阵乘法操作依次应用到列表所有元素上,计算结果和方案1完全一致:

    import numpy as np
    from functools import reduce
    
    Number = 10
    mylist = [np.random.randint(1, 5, size=(4, 4)) for i in range(Number)]
    dot_result = reduce(lambda x, y: x @ y, mylist)
    

注意:以上两种方案都不需要针对Number的取值修改计算逻辑,调整Number生成不同长度的矩阵列表后,直接传入即可得到正确的连乘结果。你的场景中所有矩阵都是4×4方阵,天然满足矩阵乘法维度匹配要求,不会出现维度报错问题。

内容的提问来源于stack exchange,提问作者Brian Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:33:16