Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
如何在numpy中为没有循环的多个整数类型创建布尔索引_Numpy - Fatal编程技术网

如何在numpy中为没有循环的多个整数类型创建布尔索引

如何在numpy中为没有循环的多个整数类型创建布尔索引,numpy,Numpy,我想为数组创建一个布尔索引,每当给定列表中的任何整数出现在数组中时,该索引都具有真值。现在,我通过循环测试整数列表来实现这一点,并为每个测试整数构建一个单独的布尔掩码,我将它们按位或组合在一起,如下所示: boolean_mask = original_array == list_of_codes[0] for code in list_of_codes[1::]: boolean_mask = boolean_mask | (original_array == code) 有没有简写

我想为数组创建一个布尔索引,每当给定列表中的任何整数出现在数组中时,该索引都具有真值。现在,我通过循环测试整数列表来实现这一点,并为每个测试整数构建一个单独的布尔掩码,我将它们按位
组合在一起,如下所示:

boolean_mask = original_array == list_of_codes[0]
for code in list_of_codes[1::]:
    boolean_mask = boolean_mask | (original_array == code)
有没有简写的numpy符号可以在没有循环的情况下进行等效?

我想你可以写:

boolean_mask = (original_array == list_of_codes)
如果这是错误的,请给出一个小的测试示例,这样我可以确保我知道您正在尝试做什么。

您有:

我应该这样做。请注意,
np.in1d
会将两个数组展平,因此,如果您的
原始_数组是多维数组,则必须将其重新整形,例如:

boolean_mask = boolean_mask.reshape(original_array.shape)

那不行。您可以按照
np.logical\u或.reduce(原始的\u数组[…,np.newaxis]==list\u of \u code,axis=-1)
的思路做一些事情,但它可以创建一个巨大的中间数组,这取决于
list\u of \u code
的大小,所以性能可能不会太好。@Jamie的答案np.ind有效,您的示例给出了“False”。这里有一个例子:np.array([0,1,2,3,4])==[1,2]我想产生[False,True,True,False,False],但是这个例子只产生False。
boolean_mask = boolean_mask.reshape(original_array.shape)