【发布时间】:2012-01-18 04:43:28
【问题描述】:
如docs for numpy.all()中所述:
numpy.all()测试沿给定轴的所有数组元素是否评估为 True。
是否有相反的功能:检查是否所有数组元素沿给定轴(我需要对角线)评估为 False。
我特别需要检查二维矩阵的对角线是否处处为零。
【问题讨论】:
如docs for numpy.all()中所述:
numpy.all()测试沿给定轴的所有数组元素是否评估为 True。
是否有相反的功能:检查是否所有数组元素沿给定轴(我需要对角线)评估为 False。
我特别需要检查二维矩阵的对角线是否处处为零。
【问题讨论】:
首先,要提取对角线,可以使用mymatrix.diagonal()。
有很多方法可以做你想做的事。
要测试它是否在任何地方都为零,您可以使用numpy.all(mymatrix.diagonal() == 0)。
或者,“一切都等于零(假)”与“没有都等于真”相同,因此您也可以使用not numpy.any(mymatrix.diagonal())。
由于它是一个数字矩阵,您可以将对角线上元素的绝对值相加,如果它们都为 0,则每个元素都必须为零:numpy.sum(numpy.abs(mymatrix.diagonal()))==0。
【讨论】:
布尔条件可以是任何东西。所以要么
(np.diag(x) == 0).all()
或
(np.diag(x) != 0).any()
有效,但第二个版本在任何检查是否存在错误情况时都会提前停止。两种情况都需要构建完整的布尔数组。
【讨论】: