NumPy布尔数组警告?

Ano*_*ous 9 python arrays boolean numpy bitmask

我有几个numpy的阵列,让说a,bc,并创建了一个mask适用于所有的人.

我试图掩盖它们:

a = a[mask]

哪里mask是一个bool数组.值得注意的是,我已经证实了这一点

len(a) = len(b) = len(c) = len(mask)

我收到了一个相当神秘的警告:

FutureWarning: in the future, boolean array-likes will be handled as a boolean array index

DSM*_*DSM 17

False == 0,True == 1.如果你的掩码是一个列表,而不是一个ndarray,你可能会得到一些意想不到的行为:

>>> a = np.array([1,2,3])
>>> mask_list = [True, False, True]
>>> a[mask_list]
__main__:1: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index
array([2, 1, 2])
Run Code Online (Sandbox Code Playgroud)

这个数组由[1],[0]和[1]组成,就像

>>> a[np.array([1,0,1])]
array([2, 1, 2])
Run Code Online (Sandbox Code Playgroud)

另一方面:

>>> mask_array = np.array(mask_list)
>>> mask_array
array([ True, False,  True], dtype=bool)
>>> a[mask_array]
array([1, 3])
Run Code Online (Sandbox Code Playgroud)

警告告诉你,最终a[mask_list]会给你相同的a[mask_array](这可能是你想要它首先给你的.)