测试numpy数组是否对称?

2021-06-14 22:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有更好的python方法来检查ndarray是否在特定维度上是对角对称的?i、 所有x的e

(arr[:,:,x].T==arr[:,:,x]).all()

我肯定我漏掉了一个答案,但这里是2:15。。。:)

编辑:为了澄清,我正在寻找一种更“优雅”的方式:

for x in range(xmax):
    assert (arr[:,:,x].T==arr[:,:,x]).all()
2条回答
网友
1楼 ·

如果我没听错的话,你想检查一下

all((arr[:,:,x].T==arr[:,:,x]).all() for x in range(arr.shape[2]))

没有Python循环。以下是操作方法:

(arr.transpose(1, 0, 2) == arr).all()
网友
2楼 ·

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

np.allclose(arr.transpose(1, 0, 2), arr)

如果某些值可能是NaN,请在测试之前将其设置为标记值。

arr[np.isnan(arr)] = 0

相关问题