测试numpy数组是否对称?

Bol*_*ter 14 python numpy matrix

是否有更好的pythonic方法来检查ndarray是否在特定维度上对角对称?即对于所有的x

(arr[:,:,x].T==arr[:,:,x]).all()
Run Code Online (Sandbox Code Playgroud)

我确定我错过了一个(duh)答案,但是这里的2:15 ...... :)

编辑:澄清一下,我正在寻找一种更"优雅"的方式:

for x in range(xmax):
    assert (arr[:,:,x].T==arr[:,:,x]).all()
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 21

如果我理解正确,你想做检查

all((arr[:,:,x].T==arr[:,:,x]).all() for x in range(arr.shape[2]))
Run Code Online (Sandbox Code Playgroud)

没有Python循环.这是怎么做的:

(arr.transpose(1, 0, 2) == arr).all()
Run Code Online (Sandbox Code Playgroud)


Way*_*inn 13

如果您的数组包含浮点数(特别是如果它们是计算的结果),请使用 allclose

np.allclose(arr.transpose(1, 0, 2), arr)
Run Code Online (Sandbox Code Playgroud)

如果您的某些值可能是NaN,请在测试之前将它们设置为标记值.

arr[np.isnan(arr)] = 0
Run Code Online (Sandbox Code Playgroud)