我只是在代码中发现了一个逻辑错误,该错误导致了各种各样的问题。我在无意中执行了按位AND运算,而不是逻辑AND 运算。
我将代码从:
r = mlab.csv2rec(datafile, delimiter=',', names=COL_HEADERS)
mask = ((r["dt"] >= startdate) & (r["dt"] <= enddate))
selected = r[mask]
至:
r = mlab.csv2rec(datafile, delimiter=',', names=COL_HEADERS)
mask = ((r["dt"] >= startdate) and (r["dt"] <= enddate))
selected = r[mask]
令我惊讶的是,我得到了一个相当神秘的错误消息:
ValueError
:具有多个元素的数组的真值不明确。使用a.any()
或a.all()
为什么在使用按位运算时没有发出类似的错误?如何解决此错误?
r是一个numpy(rec)
数组。r["dt"] >= startdate
(boolean)数组也是如此。对于numpy数组,该&操作返回两个布尔数组中的elementwise
和。
该NumPy的开发者觉得有没有人通常理解的方式来评估布尔上下文中的数组:这可能意味着True,如果任何元素 True
,或者它可能意味着True
,如果所有元素True
,或者True
如果该数组有非0的长度,只是说出三种可能性。
由于不同的用户可能有不同的需求和不同的假设,因此NumPy
开发人员拒绝猜测,而是决定每当尝试在布尔上下文中评估数组时就引发ValueError
。应用于and两个numpy
数组将导致两个数组在布尔上下文中求值(通过__bool__在Python3
或__nonzero__Python2
中调用)。
你的原始代码
mask = ((r["dt"] >= startdate) & (r["dt"] <= enddate))
selected = r[mask]
看起来很正确。但是,如果确实需要and,则可以a and b使
用(a-b).any()
或代替(a-b).all()
。
我刚刚在我的代码中发现了一个逻辑错误,它导致了各种各样的问题。我无意中做了位AND而不是逻辑AND。 我把代码从: 到: 令我惊讶的是,我得到了一个相当神秘的错误消息: ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 为什么在使用逐位操作时没有发出类似的错误?如何修复?
我有一个数据帧“信号”: 因为我需要一些条件来设置我的“\u exec\u dict”,这是一个告诉交易平台我的订单是什么的字典? 问题是我不能使用 来做条件判定。 要进行测试,请执行以下操作: 有一些改变, 结果是: 搜索后,像一个系列的真相值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()
当我运行以下代码时: 它给出了以下错误: ValueError:序列的真值不明确。 使用a.empty、a.bool()、a.item()、a.any()或a.all() 这里怎么了?
下面的代码给我值错误: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()
但我有一个错误。 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我怎样才能修好它?
问题内容: 此Python代码: 引发此错误信息: 谁能告诉我该怎么办才能解决上面破碎的代码中的问题,以便停止抛出错误消息? 编辑: 我做了一个打印命令来获取矩阵的内容,这就是它打印出来的内容: 对我来说,这看起来像是5行乘13列的矩阵,但是当通过脚本运行不同的数据时,行数是可变的。使用我要添加的相同数据。 编辑2:但是,脚本抛出错误。因此,我认为您的想法不能解释此处正在发生的问题。谢谢你 还有其