Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将numpy.where()与or语句一起使用会返回一个关于不明确值的错误_Python_Numpy_Boolean - Fatal编程技术网

Python 将numpy.where()与or语句一起使用会返回一个关于不明确值的错误

Python 将numpy.where()与or语句一起使用会返回一个关于不明确值的错误,python,numpy,boolean,Python,Numpy,Boolean,我正在尝试为一个项目从多个数组中选择值,但在使用布尔值时遇到了问题。我有两个名为zdat和photdat的数据文件,每个文件都有5000多个值。我需要使用两者的质量标志将它们稀疏到一个新数组中。对于zdat文件,我需要标志为3或4,所以我想我可以将其插入numpy.where函数,但我一直得到相同的错误:包含多个元素的数组的真值不明确。使用a.any或a.all。我已经查找了它们的作用,并尝试将它们添加到代码中,以允许我使用OR语句,但我不断得到错误。numpy.where函数的其余部分在没有o

我正在尝试为一个项目从多个数组中选择值,但在使用布尔值时遇到了问题。我有两个名为zdat和photdat的数据文件,每个文件都有5000多个值。我需要使用两者的质量标志将它们稀疏到一个新数组中。对于zdat文件,我需要标志为3或4,所以我想我可以将其插入numpy.where函数,但我一直得到相同的错误:包含多个元素的数组的真值不明确。使用a.any或a.all。我已经查找了它们的作用,并尝试将它们添加到代码中,以允许我使用OR语句,但我不断得到错误。numpy.where函数的其余部分在没有or语句的情况下工作,但我需要or语句来选择高质量的数据

izspec=np.其中np.anyzdat['spec_z']==3或4&photdat['totmask']==0&photdat['K_flag']==0&goodmag<23 我希望它能将我的数据从5000个左右减少到170个左右,因为我被告知有很多好的数据点。如果我将它设置为zdat['spec_z']==3或zdat['spec_z']==4,那么其中任何一个都会分别给我60-80分,但这些标志都被认为是好的,所以我需要两者。

你不能像这样使用布尔测试:

(at['spec_z'] == 3 or at['spec_z'] == 4)
(at['spec_z'] in (3, 4))
在['spec_z']==3或4时糟糕! 您需要重复测试,如下所示:

(at['spec_z'] == 3 or at['spec_z'] == 4)
(at['spec_z'] in (3, 4))
或者像这样:

(at['spec_z'] == 3 or at['spec_z'] == 4)
(at['spec_z'] in (3, 4))

首先,仔细看看np.anyzdat['spec_z']==3或4我对我应该寻找的东西感到困惑。我想从“spec_z”列中的zdat文件中选择等于3或4的值。通过使用这些zdat..photodat。。。。。只需将第一个或第二个表达式拆分为用|连接的两个表达式。所有的工作都是为了让布尔值正确。我相信你使用np.where的方式是不必要的,而且是错误的。如果你想选择值,只需使用我的数组[条件]。@AlexanderCécile,使用np.where的习惯,当我们表示np.nonzero时,会慢慢消失,如果有的话。无论如何,这不是问题所在。问题是如何正确构造包含or条件的布尔数组。Python在调用where/nonzero之前对该参数进行完整计算。据我所知,直接使用布尔索引没有任何好处。