给定 X numpy 数组,return 如果其任何元素为零则为真
Given the X numpy array, return True if any of its elements is zero
X给出如下:
X = np.array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
我的回答是:any(X==0)
.
但是标准答案是X.any()
,而且是returnsTrue
,搞不懂
对我来说,X.any()
正在查找数组中是否有任何 True
或 1
。在这种情况下,由于给定的 X 数组中没有 1
,因此它应该返回 False
。我做错了什么?提前致谢!
X.any()
是一个不正确的答案,它会在 X = np.array([0])
上失败,例如(错误地返回 False
)。
正确答案是:~X.all()
。根据De Morgan's laws,任何元素为0等价于NOT(所有元素为(NOT 0)).
它是如何工作的?
Numpy 正在隐式转换为布尔值:
X = np.array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
# array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
# convert to boolean
# 0 is False, all other numbers are True
X.astype(bool)
# array([ True, True, False, True, True, True, False, False, True, True])
# are all values truthy (not 0 in this case)?
X.astype(bool).all()
# False
# get the boolean NOT
~X.astype(bool).all()
# True
X给出如下:
X = np.array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
我的回答是:any(X==0)
.
但是标准答案是X.any()
,而且是returnsTrue
,搞不懂
对我来说,X.any()
正在查找数组中是否有任何 True
或 1
。在这种情况下,由于给定的 X 数组中没有 1
,因此它应该返回 False
。我做错了什么?提前致谢!
X.any()
是一个不正确的答案,它会在 X = np.array([0])
上失败,例如(错误地返回 False
)。
正确答案是:~X.all()
。根据De Morgan's laws,任何元素为0等价于NOT(所有元素为(NOT 0)).
它是如何工作的?
Numpy 正在隐式转换为布尔值:
X = np.array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
# array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10])
# convert to boolean
# 0 is False, all other numbers are True
X.astype(bool)
# array([ True, True, False, True, True, True, False, False, True, True])
# are all values truthy (not 0 in this case)?
X.astype(bool).all()
# False
# get the boolean NOT
~X.astype(bool).all()
# True