Python 有没有一种好方法可以跟踪scipy中的大量符号?

Python 有没有一种好方法可以跟踪scipy中的大量符号?,python,sympy,Python,Sympy,我需要对非常大的方程组进行符号操作,最终得到200多个变量,我需要用这些变量进行计算。问题是,在求解小型方程组时,通常会将变量命名为x,y,可能是z。甚至从a,b。。。这样只会得到26个唯一变量 有没有解决这个问题的好方法?比如说,我想在每个点用不同的变量填充一个14x14矩阵。我该怎么做呢?我建议您使用包numpy,这样您就可以使用数组了 注意``np.zero((14,14))``将用0填充矩阵,以后可以用所需的变量值替换每个元素。请注意,函数调用中额外的一对括号是必需的 您可以使用语法va

我需要对非常大的方程组进行符号操作,最终得到200多个变量,我需要用这些变量进行计算。问题是,在求解小型方程组时,通常会将变量命名为
x
y
,可能是
z
。甚至从
a
b
。。。这样只会得到26个唯一变量


有没有解决这个问题的好方法?比如说,我想在每个点用不同的变量填充一个14x14矩阵。我该怎么做呢?

我建议您使用包
numpy
,这样您就可以使用数组了

注意``np.zero((14,14))``将用0填充矩阵,以后可以用所需的变量值替换每个元素。请注意,函数调用中额外的一对括号是必需的


您可以使用语法
variableMatrix[i-1,j-1]
访问矩阵的
i,j
th元素。我从索引中减去了一个,因为Python索引当然从0开始。

您可以通过

这可以像您所期望的那样访问

>>> A[2, 3]
A[2, 3]

我认为最直接的方法是使用
sympy.symarray
,如下所示:

x=sympy.symmarray(“x”,(5,5,5))

这将创建一个相应大小的(
numpy
)数组(此处大小为
5x5x5
),其中包含sympy变量,更具体地说,这些变量以您选择的任何变量作为前缀(此处
“x”
),并具有与您提供的维度相同的索引,此处为3。当然,您可以根据需要制作尽可能多的这些数组-也许可以为不同的变量组使用不同的前缀以提高可读性等

然后,您可以在代码中使用这些参数,例如x[i,j,k]:


In[6]:x[0,1,4]
Out[6]:x_0_1_4

(请注意,您不能通过
x_i_j_k
访问元素-我在开始使用Symphy时发现这有点违反直觉,但一旦您掌握了python与Symphy变量的区别,这就非常有意义了。)

当然,也可以对数组使用切片,例如x[:,0,0]。 如果需要变量的python列表,可以使用例如
x.flant().tolist()

在我看来,这比使用symphy.MatrixSymbol更可取,因为(a)你可以决定你想要的索引数量,(b)元素是“正常的”
symphy.Symbol
s,这意味着你可以确定你可以用它们做任何事情,如果你把它们声明为常规符号,你也可以用它们做任何事情。
(我不确定sympy 1.1中是否仍然存在这种情况,但在sympy 1.0中,以前并非所有功能都是为
MatrixElement
实现的)

我删除了
numpy
标记,因为这是一个
sympy
问题。你得到了太多的
numpy
list
答案。
>>> A = MatrixSymbol('A', 14, 14)
>>> A[2, 3]
A[2, 3]