我刚刚在我的代码中发现了一个逻辑错误,它导致了各种各样的问题.我不小心考了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)array.所以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相关问答推荐

从dict的列中分钟

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

加速Python循环

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

递归访问嵌套字典中的元素值

字符串合并语法在哪里记录

Django—cte给出:QuerySet对象没有属性with_cte''''

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

人口全部乱序 - Python—Matplotlib—映射

使用tqdm的进度条

计算机找不到已安装的库'

如何为需要初始化的具体类实现依赖反转和接口分离?

有了Gekko,可以创建子模型或将模型合并在一起吗?

关于数字S种子序列内部工作原理的困惑

将参数从另一个python脚本中传递给main(argv

为什么这个正则表达式没有捕获最后一次输入?

S最大值除以最小值,然后减1的结果是什么?

是否在DataFrame中将所有列设置为大写?

如果init被重载,如何输入提示一个基于init的函数的返回类型