我目前正在使用Python 2.7.3,sympy 0.7.1.rc1 我正在构建两个这样的矩阵:
import sympy as sp
A = sp.Matrix([[0,0,1],[0,1,0],[1,0,0]])
B = sp.Matrix([[0,0,1],[0,1,0],[1,0,0]])
print A
print B
print A==B
print hash(A)
print hash(B)
,结果是......
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
True
3144597
3144601
A,B的哈希值不同。我需要把这两个矩阵放到一个set()中,但是哈希值是不同的,然后我无法做我想要的。 这是一个有同情心的错误,还是我应该采取另一种方式?
答案 0 :(得分:1)
正如评论者所说,您需要更新到较新版本的SymPy。在旧版本中,可变矩阵是可清除的,这是不正确的。现在,hash(Matrix([[0,0,1],[0,1,0],[1,0,0]]))
应该提升TypeError
。如果您想要一个可散列矩阵,请使用ImmutableMatrix
。