在sympy中将值替换为列表会产生意外结果

时间:2017-10-27 03:30:27

标签: python sympy substitution

我想执行以下操作,我在其中输入索引并且它会吐出我想要的值。但是当我为它分配值时,它会给我带来意想不到的结果。

import sympy as sy
import numpy as np
i = sy.Symbol('i', integer=True)
j = sy.Symbol('j', integer=True)
a = sy.IndexedBase('a')
y=a[i, j]**2+3
y.subs({a:np.array([[1,2,3,4,5,6,7]]),i:0,j:4})

我希望答案是5 ** 2 + 3 = 28,但它给了我一个[0,4] ** 2 + 3.

1 个答案:

答案 0 :(得分:0)

IndexedBase类型似乎没有用于访问数据(而是用于表示法)。请参阅http://docs.sympy.org/latest/modules/tensor/indexed.html以下声明:

  

此类的主要目的是允许方便地创建Indexed类的对象。 IndexedBase的 getitem 方法返回Indexed。

的实例

也许你可以用Matrix类型实现你想要的效果?