是否有一个NumPy函数来返回数组中某物的第一个索引?

是否有一个NumPy函数来返回数组中某物的第一个索引?

我知道Python列表有一种方法可以返回某些内容的第一个索引:

>>> l = [1, 2, 3]>>> l.index(2)1

对于NumPy数组有类似的东西吗?



红颜莎娜
浏览 459回答 3
3回答

慕田峪4524236

是的,这是给出一个NumPy数组的答案,array,还有一个价值,item,搜寻:itemindex = numpy.where(array==item)结果是一个元组,首先是所有行索引,然后是所有列索引。例如,如果一个数组是两个维度,并且它在两个位置包含了您的项,那么array[itemindex[0][0]][itemindex[1][0]]就等于你的物品array[itemindex[0][1]][itemindex[1][1]]numpy.where

慕侠2389804

如果需要第一次出现的索引只有一个值,你可以用nonzero(或where,在本例中相当于相同的内容):>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])>>> nonzero(t == 8)(array([6, 8, 9]),)>>> nonzero(t == 8)[0][0]6的第一个索引。多值,您显然可以重复执行上面的操作,但是有一个技巧可能会更快。下面查找每个元素的第一个元素的索引子序列:>>> nonzero(r_[1, diff(t)[:-1]])(array([0, 3, 5, 6, 7, 8]),)注意,它找到3s的子序列和8s的子序列的开头:[1, 1, 1, 2, 2, 3, 8, 3, 8, 8]所以这和找到第一个发生每一种价值。在您的程序中,您可以使用排序版本的t为了得到你想要的:>>> st = sorted(t)>>> nonzero(r_[1, diff(st)[:-1]])(array([0, 3, 5, 7]),)

慕码人2483693

还可以将NumPy数组转换为空列表并获取其索引。例如,l = [1,2,3,4,5] # Python lista = numpy.array(l) # NumPy arrayi = a.tolist().index(2) # i will return index of 2print i它将打印1。 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python