NumPy 布尔数组警告?
NumPy boolean array warning?
我有几个 numpy 数组,比方说 a
、b
和 c
,并创建了一个 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
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])
这个数组由a[1]、a[0]和a[1]组成,就像
>>> a[np.array([1,0,1])]
array([2, 1, 2])
另一方面:
>>> mask_array = np.array(mask_list)
>>> mask_array
array([ True, False, True], dtype=bool)
>>> a[mask_array]
array([1, 3])
警告告诉你最终 a[mask_list]
会给你和 a[mask_array]
一样的结果(这可能是你一开始想要它给你的。)
我有几个 numpy 数组,比方说 a
、b
和 c
,并创建了一个 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
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])
这个数组由a[1]、a[0]和a[1]组成,就像
>>> a[np.array([1,0,1])]
array([2, 1, 2])
另一方面:
>>> mask_array = np.array(mask_list)
>>> mask_array
array([ True, False, True], dtype=bool)
>>> a[mask_array]
array([1, 3])
警告告诉你最终 a[mask_list]
会给你和 a[mask_array]
一样的结果(这可能是你一开始想要它给你的。)