Likely rand_num
是一个多维数组。在这种情况下元素(所以x
) 也将是一个数组。为了x > 0
,这是一个数组bool
s,但你不能说布尔数组是True
or False
。假设一个数组包含两个True
和三False
例如。你会考虑吗True
or not?
Using filter(..)
这里可能没有必要。您可以通过使用布尔数组作为下标来轻松过滤数组:
arr2 = rand_num[rand_num > 0]
例如:
>>> rand_num[rand_num > 0]
array([1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1])
或者如果我们想保留形状,我们可以构造一个屏蔽数组:
arr2 = np.ma.masked_array(rand_num, mask=rand_num <= 0)
这将产生:
>>> np.ma.masked_array(rand_num, mask=rand_num <= 0)
masked_array(
data=[[--, 1, 1, --, --],
[--, --, 1, --, --],
[--, 1, 2, --, --],
[--, --, --, 1, --],
[1, 1, 1, 1, 1]],
mask=[[ True, False, False, True, True],
[ True, True, False, True, True],
[ True, False, False, True, True],
[ True, True, True, False, True],
[False, False, False, False, False]],
fill_value=999999)