繁体   English   中英

使用 numpy.where() 和 or 语句会给我一个关于不明确值的错误

[英]Using numpy.where() along with an or statement gives me back an error about ambiguous values

我正在尝试从一个项目的多个数组中选择值,但在使用它的布尔值时遇到了问题。 我有两个名为“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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM