プログラムをテストするために、ランダムな対称行列を作成しようとしました。データが対称的である限り、データはまったく気にしません (十分なランダム性はまったく問題ではありません)。
私の最初の試みはこれでした:
x=np.random.random((100,100))
x+=x.T
ただし、np.all(x==x.T)
False を返します。 print x==x.T
収量
array([[ True, True, True, ..., False, False, False],
[ True, True, True, ..., False, False, False],
[ True, True, True, ..., False, False, False],
...,
[False, False, False, ..., True, True, True],
[False, False, False, ..., True, True, True],
[False, False, False, ..., True, True, True]], dtype=bool)
何が起こっているかを確認するために n=10 で小さなテスト例を実行しようとしましたが、その例は期待どおりに機能します。
代わりに次のようにすると:
x=np.random.random((100,100))
x=x+x.T
その後、問題なく動作します。
何が起きてる?これらのステートメントは意味的に同等ではありませんか? 違いは何ですか?