微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我必须在这段代码中使用 a.any() 或 a.all() ?

如何解决为什么我必须在这段代码中使用 a.any() 或 a.all() ?

在下面的这段代码中,我发现当我输入一个数字时它可以工作,但是当我输入 ndarray 时它会发布一条错误消息。
为什么在这种情况下我必须使用 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,而是一个 {{1} 的数组},其中每个单元格说明是否bool

您可以检查其中的所有元素是否都是 *that cell* %2 == 1 (1) 或者它们中的任何一个是带有 truthytruthynp.all

,

这是因为执行np.array([1,2,3,4])%2时,输出也是np数组格式-array([1,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,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,4]))

以上代码的输出为1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。