Python numpy.where是否总是按升序输出索引?

Python numpy.where是否总是按升序输出索引?,python,numpy,Python,Numpy,例如,我有一个1D布尔数组a a = numpy.array([0, 1, 0, 0, 1, 1, 1, 0, 1], dtype='bool') 我想使用numpy.where查找真实元素的索引 idx = numpy.where(a)[0] 我可以假定输出idx总是按升序排序吗?numpy.where能保证吗?我之所以提出这个问题,是因为文档中没有提到它和numpy。其中是用C编写的,它的工作原理并不明显。如果绝对最大速度不是最重要的,您可以简单地将您的假设明确地编码出来: idx =

例如,我有一个1D布尔数组
a

a = numpy.array([0, 1, 0, 0, 1, 1, 1, 0, 1], dtype='bool')
我想使用
numpy.where
查找真实元素的索引

idx = numpy.where(a)[0]

我可以假定输出
idx
总是按升序排序吗?
numpy.where
能保证吗?我之所以提出这个问题,是因为文档中没有提到它和
numpy。其中
是用C编写的,它的工作原理并不明显。

如果绝对最大速度不是最重要的,您可以简单地将您的假设明确地编码出来:

idx = np.arange(len(a))[a]

也就是说,
np。非零(a)
保证按照文档的顺序给出索引。与上面的方法相比,它的显式性稍差,但会更快。

调用
numpy.where
而不带条件相当于
np.asarray(arr).nonzero()
(在这种情况下,应该使用它来代替
numpy.where
)<代码>非零保证:“a中的值总是按照行的主调,C样式的顺序进行测试和返回。”如果您对源代码感兴趣,它是正确的。您可以清楚地看到数组是按行主顺序迭代的。此外,在@user3483203中有一篇关于
行主顺序
的文章,那么这是否意味着它将始终以升序返回索引数组?对于1D数组,是的,始终如此。