2 个回答

1

布尔条件可以是任何东西。所以可以用下面两种方式:

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

或者

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

这两种方式都可以,但第二种方式在遇到假值时会提前停止检查。无论哪种情况,都需要构建完整的布尔数组。

12

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

其实有很多方法可以实现你想要的功能。

如果想检查对角线上的元素是否全部为零,可以使用 numpy.all(mymatrix.diagonal() == 0)

另外,“所有元素都等于零(假)”和“没有元素等于真”是一样的,所以你也可以用 not numpy.any(mymatrix.diagonal())

不过,因为这是一个数字矩阵,你也可以把对角线上的元素的绝对值加起来,如果总和为0,那就说明每个元素都是零: numpy.sum(numpy.abs(mymatrix.diagonal()))==0

撰写回答