为什么我必须在此代码中使用 a.any() 或 a.all()?
Why do I have to use a.any() or a.all() in this code?
在下面的这段代码中,我发现当我输入一个数字时它可以工作,但是当我输入 ndarray 时它会 post 一条错误消息。
为什么在这种情况下我必须使用 a.any() 或 a.all()?
import numpy as np
def ht(x):
if x%2 == 1:
return 1
else:
return 0
ht(1)
[例子]
步骤(1): 1
step(np.array([1,2,3,4])) :具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
在评估 if
语句时,您必须传入 bool
.
if var:
pass
var
必须是 bool
.
类型
如果x
是一个数字,那么x%2 == 1
就是一个bool
。
如果 x
是一个 np.array
,那么 x%2 == 1
是一个 np.array
而不是 bool
,而是一个 bool
,其中每个单元格说明是否 *that cell* %2 == 1
.
您可以检查其中的所有元素是否都是 truthy
(1) 或者其中是否有任何元素是 truthy
with np.all
or np.any
.
这是因为执行np.array([1,2,3,4])%2
时,输出的也是np数组格式-array([1, 0, 1, 0])
。要检查这些单独的数组元素是 1 还是 0,必须使用 any()
或 all()
函数。当我们传递单个元素时没有问题。
所以,这里是修改后的代码-
import numpy as np
def ht(x):
if all(x%2 == 1): #denotes true when all modulus results are == 1
return 1
else:
return 0
ht(np.array([1,2,3,4]))
以上代码的输出是0
import numpy as np
def ht(x):
if any(x%2 == 1): #denotes true when any modulus result is == 1
return 1
else:
return 0
ht(np.array([1,2,3,4]))
以上代码的输出是1
在下面的这段代码中,我发现当我输入一个数字时它可以工作,但是当我输入 ndarray 时它会 post 一条错误消息。
为什么在这种情况下我必须使用 a.any() 或 a.all()?
import numpy as np
def ht(x):
if x%2 == 1:
return 1
else:
return 0
ht(1)
[例子]
步骤(1): 1
step(np.array([1,2,3,4])) :具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
在评估 if
语句时,您必须传入 bool
.
if var:
pass
var
必须是 bool
.
如果x
是一个数字,那么x%2 == 1
就是一个bool
。
如果 x
是一个 np.array
,那么 x%2 == 1
是一个 np.array
而不是 bool
,而是一个 bool
,其中每个单元格说明是否 *that cell* %2 == 1
.
您可以检查其中的所有元素是否都是 truthy
(1) 或者其中是否有任何元素是 truthy
with np.all
or np.any
.
这是因为执行np.array([1,2,3,4])%2
时,输出的也是np数组格式-array([1, 0, 1, 0])
。要检查这些单独的数组元素是 1 还是 0,必须使用 any()
或 all()
函数。当我们传递单个元素时没有问题。
所以,这里是修改后的代码-
import numpy as np
def ht(x):
if all(x%2 == 1): #denotes true when all modulus results are == 1
return 1
else:
return 0
ht(np.array([1,2,3,4]))
以上代码的输出是0
import numpy as np
def ht(x):
if any(x%2 == 1): #denotes true when any modulus result is == 1
return 1
else:
return 0
ht(np.array([1,2,3,4]))
以上代码的输出是1