【问题标题】:Not operator, seemingly wrong in Python?不是运算符,在 Python 中似乎是错误的?
【发布时间】:2016-04-06 05:23:14
【问题描述】:

我是 python 新手,创建了一个小函数来进行聚类分析。 快速总结是我必须多次比较两个数组,直到它不再改变。为此,我使用了一个while循环,只要它们不相等就会循环,但我发现我从!=而不是==得到两个不同的结果。 MWE:

import numpy as np

a = np.array([1,1,1])
b = np.array([1,2,1])

print((a != b).all())
print(not (a == b))

【问题讨论】:

  • 在你的例子中,你的意思是写not (a == b).all()

标签: python not-operator


【解决方案1】:

not (a == b) 将引发 ValueError,因为具有多个元素的数组的真值是不明确的。

在 numpy 中反转布尔数组的方法是使用 ~ 运算符:

>>> a != b
array([False,  True, False], dtype=bool)
>>> ~ (a == b)
array([False,  True, False], dtype=bool)
>>> (~ (a == b)).all() == (a != b).all()
True

【讨论】:

    【解决方案2】:

    以下两个表达式相等。当至少有一个不同的元素时,它们返回 true。

    print((a != b).any())
    print(not (a == b).all())
    

    以下两个也给出了相同的结果。当两个数组中相同位置的每个元素都不同时,它们返回 true。

    print((a != b).all())
    print(not (a == b).any())
    

    【讨论】:

      【解决方案3】:

      要了解更多信息,请查看此代码,您想比较 dc 但两者都是数组,因此您应该正确比较,而不是仅使用非运算符!!

      a = np.array([1,1,1])
      b = np.array([1,2,1])
      c = (a!=b)
      type(c)
      Out[6]: numpy.ndarray
      type(a)
      Out[7]: numpy.ndarray
      c
      Out[8]: array([False,  True, False], dtype=bool)
      c.all()
      Out[9]: False
      d = (a==b)
      type(d)
      Out[11]: numpy.ndarray
      d
      Out[12]: array([ True, False,  True], dtype=bool)
      not d
      ---------------------------------------------------------------------------
      ValueError                                Traceback (most recent call last)
      <ipython-input-13-84cd3b926fb6> in <module>()
      ----> 1 not d
      
      ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
      
      not(d.any())
      Out[15]: False
      
      x = d.any()
      type(x)
      Out[19]: numpy.bool_
      

      【讨论】:

        猜你喜欢
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 2023-03-09
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多