是否有更好的pythonic方法來檢查ndarray是否在特定維度上是對角對稱的?即對於所有的x的測試numpy數組是否對稱?
(arr[:,:,x].T==arr[:,:,x]).all()
我敢肯定,我錯過了(杜)的答案,但在這裏它的2:15 ... :)
編輯:爲了澄清,我正在尋找更多的「優雅」的方式來做到:
for x in range(xmax):
assert (arr[:,:,x].T==arr[:,:,x]).all()
是否有更好的pythonic方法來檢查ndarray是否在特定維度上是對角對稱的?即對於所有的x的測試numpy數組是否對稱?
(arr[:,:,x].T==arr[:,:,x]).all()
我敢肯定,我錯過了(杜)的答案,但在這裏它的2:15 ... :)
編輯:爲了澄清,我正在尋找更多的「優雅」的方式來做到:
for x in range(xmax):
assert (arr[:,:,x].T==arr[:,:,x]).all()
如果我理解正確的話,你想要做的檢查
all((arr[:,:,x].T==arr[:,:,x]).all() for x in range(arr.shape[2]))
沒有Python的循環。這裏是如何做到這一點:
(arr.transpose(1, 0, 2) == arr).all()
如果陣列包含花車(特別是如果他們是一個計算的結果),使用allclose
np.allclose(arr.transpose(1, 0, 2), arr)
如果一些值可能是NaN
,在測試之前將它們設置爲標記值。
arr[np.isnan(arr)] = 0
我認爲你的方法是完全合理的,我想不出一個內置函數來測試對稱性,以更簡潔/有效的方式做到這一點。 – JoshAdel 2011-03-16 03:07:39