如docs for numpy.all()
中所述:
numpy.all()
测试沿给定轴的所有数组元素是否评估为True 。
是否存在相反的函数:检查沿给定轴的所有数组元素(我需要对角线)是否评估为False 。
我特别需要检查二维矩阵的对角线是否零。
答案 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()
有效,但如果有错误的情况,第二个版本会在任何检查时提前停止。两种情况都需要构建完整的布尔数组。