我使用Python創建對稱矩陣/陣列,NumPy的,利用標準方法意外的結果:與+ =上與NumPy陣列
x = rand(500,500)
x = (x+x.T)
all(x==x.T)
> True
現在,讓我們變得聰明:
x = rand(500,500)
x += x.T
all(x==x.T)
> False
等待什麼?
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)
左上角和右下角段是對稱的。如果我選擇更小的陣列呢?
x = rand(50,50)
x += x.T
all(x==x.T)
> True
OK ....
x = rand(90,90)
x += x.T
all(x==x.T)
> True
x = rand(91,91)
x += x.T
all(x==x.T)
> False
而只是要確定...
x = rand(91,91)
x = (x+x.T)
all(x==x.T)
> True
這是一個錯誤,還是我要學習的東西瘋狂+=
和NumPy數組?
這個問題需要正確的標題。 – plaes 2014-10-09 12:18:33
@AndrewJaffe這是Python 3.4.1上的Numpy 1.9,分佈在Anaconda。 – jeffalstott 2014-10-09 12:34:16
@jeffalstott是的,我誤解了這個問題 - 我也看到了這種行爲。 – 2014-10-09 12:37:47