在 sympy sum 中获取索引项的使用索引
Getting used indices of indexed terms in a sympy sum
假设我有变量 x
和 y
被索引
from sympy.tensor import IndexedBase
x = IndexedBase('x')`
我有一个像 e = x[1] y[2] + x[5] y[10]
这样的表达
.我想找到每个 x
和 y
使用的所有索引。我正在寻找一个可能像这样工作的函数:e.indices(y) = [2, 10]
和 e.indicies(x) = [1, 5]
有什么方法可以遍历术语 x[i] y[j]
?如果是这样,是否有办法将产品拆分为多个术语,并为每个术语找出正在使用的字母和出现的索引?
以下应该让您朝着正确的方向前进:
>>> from sympy.tensor import IndexedBase, Indexed
>>> from sympy import sift
>>> x = IndexedBase('x')
>>> y = IndexedBase('y')
>>> e = x[1]* y[2] + x[5]* y[10]
>>> e.atoms(IndexedBase)
set([y, x])
>>> e.atoms(Indexed)
set([x[5], y[10], x[1], y[2]])
>>> sifted = sift(_,lambda i: i.base)
>>> sifted[x]
[x[5], x[1]]
>>> sifted[y]
[y[10], y[2]]
>>> [i.indices for i in _]
[(10,), (2,)]
>>> flatten(_)
[10, 2]
假设我有变量 x
和 y
被索引
from sympy.tensor import IndexedBase
x = IndexedBase('x')`
我有一个像 e = x[1] y[2] + x[5] y[10]
这样的表达
.我想找到每个 x
和 y
使用的所有索引。我正在寻找一个可能像这样工作的函数:e.indices(y) = [2, 10]
和 e.indicies(x) = [1, 5]
有什么方法可以遍历术语 x[i] y[j]
?如果是这样,是否有办法将产品拆分为多个术语,并为每个术语找出正在使用的字母和出现的索引?
以下应该让您朝着正确的方向前进:
>>> from sympy.tensor import IndexedBase, Indexed
>>> from sympy import sift
>>> x = IndexedBase('x')
>>> y = IndexedBase('y')
>>> e = x[1]* y[2] + x[5]* y[10]
>>> e.atoms(IndexedBase)
set([y, x])
>>> e.atoms(Indexed)
set([x[5], y[10], x[1], y[2]])
>>> sifted = sift(_,lambda i: i.base)
>>> sifted[x]
[x[5], x[1]]
>>> sifted[y]
[y[10], y[2]]
>>> [i.indices for i in _]
[(10,), (2,)]
>>> flatten(_)
[10, 2]