Python:从两个数组创建掩码
Python: create mask from two arrays
我想从一个数组的已定义条目创建一个掩码并将其应用于其他数组。我是 Python 的初学者,不知道如何搜索它。
示例:
values = [ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]
wanted = [ 1., 4., 7., 10.]
mask = [True, False, False, True, False, False, True, False, False, True]
other_array_1 = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
other_array_2 = [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
wanted_array_1 = other_array_1[mask]
wanted_array_1 = [1, 7, 13, 19]
wanted_array_2 = other_array_2[mask]
wanted_array_2 = [0, 6, 12, 18]
我找到了如何 select 想要的值:
select = [i for i in wanted if i in values]
然后我尝试用它制作面具:
mask_try = (i for i in wanted if i in values)
我不确定我创建的是什么,但它不是面具。它告诉我这是一个
<generator object <genexpr> at 0x7f6aa4872460>
无论如何,有没有办法为 numpy 数组创建这样的掩码?
使用in1d
>>> values = [ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]
>>> wanted = [ 1., 4., 7., 10.]
>>> mask = np.in1d(values, wanted)
>>> mask
array([ True, False, False, True, False, False, True, False, False, True], dtype=bool)
>>>
有关浮点相等性的常见注意事项适用。如果您的输入已排序,您还可以查看 np.searchsorted
我想从一个数组的已定义条目创建一个掩码并将其应用于其他数组。我是 Python 的初学者,不知道如何搜索它。
示例:
values = [ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]
wanted = [ 1., 4., 7., 10.]
mask = [True, False, False, True, False, False, True, False, False, True]
other_array_1 = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
other_array_2 = [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
wanted_array_1 = other_array_1[mask]
wanted_array_1 = [1, 7, 13, 19]
wanted_array_2 = other_array_2[mask]
wanted_array_2 = [0, 6, 12, 18]
我找到了如何 select 想要的值:
select = [i for i in wanted if i in values]
然后我尝试用它制作面具:
mask_try = (i for i in wanted if i in values)
我不确定我创建的是什么,但它不是面具。它告诉我这是一个
<generator object <genexpr> at 0x7f6aa4872460>
无论如何,有没有办法为 numpy 数组创建这样的掩码?
使用in1d
>>> values = [ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]
>>> wanted = [ 1., 4., 7., 10.]
>>> mask = np.in1d(values, wanted)
>>> mask
array([ True, False, False, True, False, False, True, False, False, True], dtype=bool)
>>>
有关浮点相等性的常见注意事项适用。如果您的输入已排序,您还可以查看 np.searchsorted