是否有更好的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