如何将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
相关产品推荐
相关产品推荐

