【问题标题】:Is there an inverted version of numpy.all()?是否有 numpy.all() 的反转版本?
【发布时间】:2012-01-18 04:43:28
【问题描述】:

docs for numpy.all()中所述:

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

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

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

【问题讨论】:

    标签: python numpy


    【解决方案1】:

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

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

    要测试它是否在任何地方都为零,您可以使用numpy.all(mymatrix.diagonal() == 0)

    或者,“一切都等于零(假)”与“没有都等于真”相同,因此您也可以使用not numpy.any(mymatrix.diagonal())

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 2011-10-18
        • 2011-11-05
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多