慕侠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]),)