2015-10-14 84 views
0

當比較使用numpy.logical_and(...)的數組時,是否有更優雅的方式返回True值的索引,而不僅僅是循環布爾結果向量和打印/保存索引?在比較numpy數組和numpy.logical_and(...)之後打印'True'索引/ ...

目前,我有這樣的:

array1 = numpy.array([1,2,3]) 
array2 = numpy.array([0.5,1.2,2]) 
comp = numpy.logical_and(numpy.logical_and(array1 != 0, array2 != 0), array1 > (3*array2)) 
if True in comp: 
    # basically just loop and find True/s. 

會喜歡的東西,只是返回具有真正價值的位置,這樣我可以更容易和更快的訪問他們在原來的ararys。

回答

1

您可以使用numpy.where(),特別是這裏numpy.where(comp)[0]

這樣的話,你MCVE也沒有很好的選擇,因爲補償不包含真。 相反,如果我用

comp = numpy.logical_and(numpy.logical_and(array1 != 0, array2 != 0), array1 > (0.6+array2)) 

然後我得到

>>>comp 
array([False, True, True], dtype=bool) 
>>> np.where(comp) 
(array([1, 2]),) 
>>> np.where(comp)[0] 
array([1, 2])