Python Numpy索引第一布尔值
在布尔数组中,我试图获取第一个True的列索引。argmax至少使用一个True,但可以理解max(False)为0。我想知道如果有一个非常大的数组,最好的方法是什么Python Numpy索引第一布尔值,python,numpy,Python,Numpy,在布尔数组中,我试图获取第一个True的列索引。argmax至少使用一个True,但可以理解max(False)为0。我想知道如果有一个非常大的数组,最好的方法是什么 name = np.array(['a', 'b', 'c', 'd']) boolarr = np.array([[True, False, False, True], [False, False, True, True], [False, Fals
name = np.array(['a', 'b', 'c', 'd'])
boolarr = np.array([[True, False, False, True],
[False, False, True, True],
[False, False, False, False]])
colidx = np.argmax(boolarr,axis=1)
print(name[colidx]) #result: ['a', 'c', 'a'] desired: ['a', 'c', None]
无法更改
argmax
的行为,因为所有False
的行的最大值为0。但是,您可以使用any
来确定包含所有False
的行,并使用np。其中
来屏蔽您的结果:
out = name[colidx]
np.where(boolarr.any(1), out, None)
array(['a', 'c', None], dtype=object)