如何将布尔数组转换为numpy中的索引数组

2024-05-12 08:59:05 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有一种有效的Numpy机制来检索数组中基于条件的位置的整数索引是真的,而不是布尔掩码数组?

例如:

x=np.array([range(100,1,-1)])
#generate a mask to find all values that are a power of 2
mask=x&(x-1)==0
#This will tell me those values
print x[mask]

在这种情况下,我想知道mask的索引i,其中mask[i]==True。不需要循环就可以生成它们吗?


Tags: tonumpynprangemask整数数组all
3条回答

如果您喜欢使用索引器方式,可以将布尔列表转换为numpy数组:

print x[nd.array(mask)]

您应该能够使用^{}来查找此信息。

另一种选择:

In [13]: numpy.where(mask)
Out[13]: (array([36, 68, 84, 92, 96, 98]),)

这和numpy.where(mask==True)是一样的。

相关问题 更多 >