Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带numpy-isin的面具_Python_Arrays_Numpy - Fatal编程技术网

Python 带numpy-isin的面具

Python 带numpy-isin的面具,python,arrays,numpy,Python,Arrays,Numpy,我想用numpy数组制作一个掩码,我已经创建了一个函数,但它并没有生成我想要的。下面是代码示例 np.isin([1,2,3,4,5,8,6,1,1],[1,2,3,5,1]) 此代码返回以下内容: array([ True, True, True, False, True, False, False, True, True], dtype=bool) 但是我想要相同的输出,除了输出数组的最后一个值为False。 因为我需要顺序的精确掩码([1,2,3,5,1]),并且长度不超过其

我想用numpy数组制作一个掩码,我已经创建了一个函数,但它并没有生成我想要的。下面是代码示例

np.isin([1,2,3,4,5,8,6,1,1],[1,2,3,5,1])
此代码返回以下内容:

array([ True,  True,  True, False,  True, False, False,  True,  True], dtype=bool)
但是我想要相同的输出,除了输出数组的最后一个值为False。
因为我需要顺序的精确掩码(
[1,2,3,5,1]
),并且长度不超过其len

,所以您可以使用以下方法将一定量的
True
后的元素归零:

mask[mask.cumsum() > 5] = False
#                    ^ length of the second array


您可以使用以下方法将一定数量的
True
s后的元素变为零:

mask[mask.cumsum() > 5] = False
#                    ^ length of the second array


谢谢你的回答,这是我问题的答案,但不是我问题的答案。我对我的问题进行了编辑,以使其更清楚。在numpy中,将你的要求矢量化并不容易(这不是我几分钟内就能想到的);你可能需要为此编写循环。我想你是对的,它需要2个循环,我只是在寻找更多的优化变量。如果你在寻找速度,你可以查看。谢谢你的回答,这是我问题的答案,但不是我问题的答案。我对我的问题进行了编辑,以使其更清楚。在numpy中,要将你的要求矢量化并不容易(我几分钟内就想不出来);你可能需要为此编写循环。我想你是对的,它需要2个循环,我只是在寻找更多的优化变量。如果你在寻找速度,你可以检查。
isin
是一个类似集合的测试。左侧数组中的每个
1
都位于右侧;右侧的值不会因匹配而耗尽。在您的问题中,值是否总是以相同的顺序出现?如果右侧包含
[1,1,2,3,1,5]
isin
是一个集合式测试,该怎么办。左侧数组中的每个
1
都位于右侧;右侧的值不会因匹配而耗尽。在您的问题中,值是否总是以相同的顺序出现?如果右边的一个包含
[1,1,2,3,1,5]
,该怎么办?