让我说我有:
numpy.random.seed(20)
a=numpy.random.rand(5000)
b=numpy.random.rand(5000)
我想得到一个a[x] > b[x]
的索引,即所有x的
此外,我想得到一个(a[x-1] < b[x-1]) && (a[x] > b[x])
的索引。
有人可以帮忙吗?我有一种感觉,我必须使用蒙面数组,但我不知道如何。
答案 0 :(得分:7)
首先是直截了当的,使用numpy.where
:
>>> numpy.where(a>b)
(array([ 0, 1, 2, ..., 4993, 4994, 4999]),)
对于第二个,您可以从
开始>>> np.where((a>b) & (np.roll(a, 1) < np.roll(b, 1)))
(array([ 5, 9, 17, ..., 4988, 4991, 4999]),)
但你必须单独处理角落案件。
再一次,@ askewchan得到了正确的表达式,而我没有正确添加1:)
>>> np.where((a[1:] > b[1:]) & (a[:-1] < b[:-1]))[0] + 1
array([ 5, 9, 17, ..., 4988, 4991, 4999])