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

如何将numpy.array代入Sympy索引符号计算数值求和?

解决Sympy索引符号代入numpy数组求和的问题

你的代码问题在于混淆了Symbol和IndexedBase的作用:Indexed("y", "i")中的"y"是Sympy自动创建的匿名索引基底,和你定义的Symbol("y")不是同一个对象,所以subs无法完成替换。

修正后的代码

from sympy import *
import numpy as np

# 定义整数类型的索引变量i(推荐指定类型,避免歧义)
i = Symbol("i", integer=True)
# 创建索引基底对象,这是索引表达式的核心载体
y = IndexedBase("y")
# 待代入的numpy数组
y_ = np.array([1,2,3,4,5])
# 用索引基底和变量构造求和表达式
h = Sum(y[i], (i, 0, 4))
# 替换索引基底为numpy数组,执行求和计算
result = h.subs(y, y_).doit()
print(result)  # 输出:15

关键说明

  • 必须用IndexedBase定义索引符号的基底,而不是普通的Symbol,这样Sympy才能识别索引表达式和数组的对应关系。
  • 替换完成后需要调用doit()方法,触发Sympy执行求和计算,否则会保留符号表达式形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:45:57