我想知道numpy.非零/ numpy.FlatNon零. 在
我在文件里找不到任何关于它的东西。上面写着:
A[nonzero(flag)] == A[flag]
虽然在大多数情况下,这已经足够了,但是当您需要一个排序的索引列表时,也会有一些索引。它保证返回的索引在一维的情况下被排序,还是我需要显式地排序?(一个类似的问题是通过使用布尔数组(一个[flag])选择返回的元素的顺序,根据文档,这个数组必须是相同的。)
示例:查找flag中真实元素之间的“间隙”:
^{pr2}$
谢谢。在
Tags:
给定了advanced (or "fancy") indexing with integers的规范,
A[nonzero(flag)] == A[flag]
的保证也是在一维情况下,值从低到高排序的保证。然而,在更高的维度中,结果(虽然“已排序”)的结构与您预期的不同。在简而言之,给定一个一维整数数组
ind
和一个一维数组x
,我们为ind
定义了所有有效的i
:result
采用ind
的形状,并在ind
表示的索引中包含{x[flag]
保持x
的原始顺序,并且如果x[nonzero(flag)]
与{唯一的问题是,对于多维数组,索引存储为每个被索引维度的不同数组。换句话说
^{pr2}$等于
这些值仍然被排序,但是每个维度被分解成自己的数组。(因此,你可以用广播做一些有趣的事情,但这超出了本文的回答范围。)
这种推理的唯一问题是,令我吃惊的是,我找不到一个明确的语句来保证布尔索引保持数组的原始顺序。尽管如此,从我的经验来看,我很肯定这是真的。更一般地说,让
x[[True, True, True]]
返回x
的一个颠倒的版本是不合理的。在相关问题 更多 >
编程相关推荐