过滤Python3/Numpy中的数组和返回索引
问题描述
Python3/Numpy中有没有什么内置函数可以过滤数组并返回剩余元素的索引?类似于numpy.argsorte的排序。我的过滤同时设置了最小阈值和最大阈值-必须过滤掉最小/最大值以下/以上的所有值。
我看过Python的函数filter,但看不到使用它提取索引的方法。
编辑:答案中有很多有用的信息,谢谢!
正如@SvenMarnach指出的,掩码就足够了:
mask = (min_value < a) & (a < max_value)
现在我必须将此掩码应用于与a
形状相同的其他数组,但不确定最佳方法是什么.
解决方案
可以通过
获取一维数组a
中大于min_value
和小于max_value
的元素的索引
indices = ((min_value < a) & (a < max_value)).nonzero()[0]
通常您不需要这些索引,但是您可以更有效地使用掩码
mask = (min_value < a) & (a < max_value)
此掩码是与a
形状相同的布尔数组。
编辑:如果您有一个与a
形状相同的数组b
,您可以用
mask
中True
条目对应的b
元素
b[mask]
相关文章