numpy.all()的反向版本是什么?
numpy.all()
会检查数组中所有元素在指定的轴上是否都为真。
有没有一个函数可以做相反的事情:检查数组中所有元素在指定的轴上(我需要的是对角线)是否都为假。
我特别想要的是检查一个二维矩阵的对角线是否到处都是零。
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
。