python - 使用 numpy.where() 和 or 语句会给我一个关于模糊值的错误
问题描述
我正在尝试为一个项目从多个数组中选择值,但是伴随它的布尔值出现了问题。我有两个名为“zdat”和“photdat”的数据文件,每个文件有超过 5000 个值。我需要使用两者的质量标志将它们稀疏到一个新数组中。对于 zdat 文件,我需要标志为 3 或 4,所以我想我可以将其插入到 numpy.where 函数中,但我不断收到相同的错误:“具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()"。我查看了它们的作用,并尝试将它们添加到代码中以允许我使用 OR 语句,但我不断收到错误消息。numpy.where 函数的其余部分在没有 or 语句的情况下工作,但我需要 or 语句来选择高质量的数据。
izspec = np.where(np.any(zdat['spec_z'] == 3 or 4) & (photdat['totmask'] == 0) & (photdat['K_flag'] == 0) & (goodmag < 23))
我希望它将我的数据从大约 5000 稀疏到大约 170ish(我被告知好的数据点的数量)。如果我将其设置为“zdat['spec_z'] == 3”或“zdat['spec_z'] == 4”,那么其中任何一个分别给我大约 60-80 分,但这些标志中的每一个都被认为是“好“所以我两者都需要。
解决方案
你不能像这样使用布尔测试:
(at['spec_z'] == 3 or 4) # BAD!
您需要重复测试,如下所示:
(at['spec_z'] == 3 or at['spec_z'] == 4)
或者像这样:
(at['spec_z'] in (3, 4))
推荐阅读
- jquery - jquery打开选择以编程方式打开
- node.js - 通过 npm 命令行测试
- php - PHP未通过本地套接字连接到MYSQL
- python - 如何在 alpine 中通过 python 使用 chromedriver 和 selenium
- python-3.x - 未绑定的本地错误:在分配之前引用?
- java - classnotfound 异常,但一切看起来都正确。有人可以告诉我我的启动功能是否错误吗?
- selenium - 当macbook被锁定时,由Jenkins在mac上发起的selenium safari测试不会运行
- excel - 根据 Excel 中的另一个表在单独的表中查找相应的值
- excel - 是否可以打开文件资源管理器并单击文本文件以获取 VBA 中的地址名称?
- r - 在自动绘图中更改颜色和框架