是否存在numpy.all()的反转版本?

时间:2012-01-18 04:43:28

标签: python numpy

docs for numpy.all()中所述:

  

numpy.all()测试沿给定轴的所有数组元素是否评估为True

是否存在相反的函数:检查沿给定轴的所有数组元素(我需要对角线)是否评估为False

我特别需要检查二维矩阵的对角线是否

2 个答案:

答案 0 :(得分:11)

首先,要提取对角线,您可以使用mymatrix.diagonal()

有很多方法可以做你想做的事。

要测试它是否为零,您可以执行numpy.all(mymatrix.diagonal() == 0)

或者,“一切都等于零(假)”与“不等于真”相同,所以你也可以使用not numpy.any(mymatrix.diagonal())

因为它是一个数值矩阵,你可以只加上对角线上元素的绝对值,如果它们都是0,则每个元素都必须为零:numpy.sum(numpy.abs(mymatrix.diagonal()))==0

答案 1 :(得分:2)

布尔条件可以是任何东西。所以

(np.diag(x) == 0).all()

(np.diag(x) != 0).any()

有效,但如果有错误的情况,第二个版本会在任何检查时提前停止。两种情况都需要构建完整的布尔数组。