首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“‘Symbol”对象不支持索引

“‘Symbol”对象不支持索引
EN

Stack Overflow用户
提问于 2016-05-21 08:55:09
回答 1查看 1.5K关注 0票数 3

我有参数A和元组T,我在名为data的字典中给它们赋值。然后我创建了方程方程。现在,当我想用值替换符号时,我得到错误的“符号”对象不支持索引。我应该如何编写代码来获得元组的第一个值来计算方程?

代码语言:javascript
复制
from sympy import *

A, T = symbols('A T')
data = {A: 1, T: (2,3)}

eq = sqrt(A*T[0])
print(eq.subs(data))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-21 18:06:09

如果T是一个抽象的SymPy符号,那么T[0]就没有真正的意义,即“某些性质不明的物体的第0次输入”。这会引发一个错误,一个符号没有索引的概念。

MatrixSymbol类,它支持双索引。例如:

代码语言:javascript
复制
from sympy import *
A = symbols('A')
T = MatrixSymbol('T', 1, 2)   # matrix of size 1 by 2
eq = sqrt((A*T)[0,0]) 

现在,eq是sqrt(A * T[0,0])

然后你可以代替A和T0,0。

代码语言:javascript
复制
data = {A: 1, T[0,0]: 2}
print(eq.subs(data))

输出sqrt(2)

当我试图替换data = {A: 1, T: Matrix([[2,3]])}时,输出是sqrt(Matrix([[3, 4]])[0, 0]),虽然它是正确的,但它的值似乎被低估了。

在任何情况下,您都不需要元组;这是一个完全不同的东西,例如在Python、3*(1,2)=(1,2,1,2,1,2)中。

顺便说一句,如果您的真正目标是将一些函数应用到一个显式给定的数字数组中,那么您可能需要NumPy。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37360826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档