期待どおりに実行されない単純なコードがあります。
from numpy import *
from numpy.linalg import *
from sets import Set
W = matrix('1, 1, 1, 1; 1, 1, -1, -1; 1, -1, 2, -2; 1, -1, -2, 2')
E = matrix('1, 1, 1, 1; 1, 1, -1, -1; 1, -1, 2, -2; 1, -1, -2, 2')
matrices = Set([])
matrices.add(W)
matrices.add(E)
matrices
マトリックスは同じですが、セットの内容を印刷すると、両方とも別々に表示されます。ただし、以下のように割り当てると、重複は表示されません。
W = matrix('1, 1, 1, 1; 1, 1, -1, -1; 1, -1, 2, -2; 1, -1, -2, 2')
E = W
何が起こっているのですか?大量の行列を生成する、作成中のプログラムで行列の重複を回避する方法が必要です。
編集:次の出力が必要です
set([matrix([[ 1, 1, 1, 1],
[ 1, 1, -1, -1],
[ 1, -1, 2, -2],
[ 1, -1, -2, 2]])])
ただし、代わりに次を取得します。
set([matrix([[ 1, 1, 1, 1],
[ 1, 1, -1, -1],
[ 1, -1, 2, -2],
[ 1, -1, -2, 2]]), matrix([[ 1, 1, 1, 1],
[ 1, 1, -1, -1],
[ 1, -1, 2, -2],
[ 1, -1, -2, 2]])])