假设我生成了1d numpy数组:
r=np.random.randint(0,10,(10,))
给予,例如:
array([1, 5, 6, 7, 7, 8, 8, 0, 2, 7])
我可以找到元素大于前一个(左边的元素)的索引,如下所示:
for x in range(r.shape[0]): if r[x]>r[x-1]: p[x]=1 else: p[x]=0 np.where(p==1)[0]
赠送:
array([1, 2, 3, 5, 8, 9])
有没有更好的方法呢?
你可以用numpy.diff
与numpy.where
:
>>> arr = np.array([1, 5, 6, 7, 7, 8, 8, 0, 2, 7]) >>> np.where(np.diff(arr) > 0)[0] + 1 array([1, 2, 3, 5, 8, 9])