Python 区分索引数组和布尔掩码的最佳方法

Python 区分索引数组和布尔掩码的最佳方法,python,numpy,Python,Numpy,如果给我一个索引数组,但我不知道它是常规索引数组还是布尔掩码,那么确定它是哪一个的最佳方法是什么?您可以检查数据类型,或者遍历并检查值是否不在集合{True,False}中,以及检查值是否不在集合{0,1}中 布尔掩码的形状必须与它们要索引到的数组的形状相同,所以这是另一个检查 但是,没有一种简单而快速的方法可以先验地区分一个数组是否只由{0,1}中的值组成是一个或另一个,没有额外的知识。检查数据类型arr.dtype?为什么给你一个数组,却没有告诉你应该如何使用它?@barmar,因为它们都是

如果给我一个索引数组,但我不知道它是常规索引数组还是布尔掩码,那么确定它是哪一个的最佳方法是什么?

您可以检查数据类型,或者遍历并检查值是否不在集合
{True,False}
中,以及检查值是否不在集合
{0,1}中

布尔掩码的形状必须与它们要索引到的数组的形状相同,所以这是另一个检查


但是,没有一种简单而快速的方法可以先验地区分一个数组是否只由
{0,1}中的值组成
是一个或另一个,没有额外的知识。

检查数据类型
arr.dtype
?为什么给你一个数组,却没有告诉你应该如何使用它?@barmar,因为它们都是常用且有效的数组索引方法。例如,scikit learn one热编码器有一个参数,可以是索引数组或布尔掩码,还有一个参数表示它是冗余的。