我刚刚在我的代码中发现了一个逻辑错误,它导致了各种各样的问题.我不小心考了bitwise AND分,而不是logical 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:包含多个元素的数组的真值为

为什么在我使用逐位操作时没有发出类似的错误?我该如何解决这个问题?

推荐答案

r是一个numpy(rec)数组.所以r["dt"] >= startdate也是一个(布尔值)

NumPy开发人员认为,没有一种普遍理解的判断方法

由于不同的用户可能有不同的需求和不同的假设

你的原始代码

mask = ((r["dt"] >= startdate) & (r["dt"] <= enddate))
selected = r[mask]

看起来不错.然而,如果你想要and,那么用(a-b).any()(a-b).all()代替a and b.

Python相关问答推荐

计算区间中素数的算法不起作用

使用 python 将 messagePack 解析为 Json

二分搜索:没有得到非常大的值的上限和下限

删除满足条件的列表中的列表

如何将 5 个数字映射到 5 种不同的 colored颜色

re.sub() 通配符

如何将对称矩阵转换为邻接表

如何使用 Python reduce 或列表推导将函数列表顺序应用于字符串?

下载文件后Python selenium停止

Sklearn - 排列重要性导致模型中零系数的非零值

'str' 对象没有属性 'apply' 与 sklearn

如何创建字典来查找丢弃的零?

过滤一行代码,只显示某些列

如何在Pandas 中按天分组?

函数的许多递归调用之一找到了正确的结果,但它不能“告诉”其他函数.有比这种丑陋的解决方法更好的解决方法吗?

前向填充上述值的块 pandas

使用 oop 处理数据帧

这种“贪婪” += 列表的行为是否得到保证?

在python中平方所需的时间

价格不会出现在 html 解析中