Kat*_*tya 6 python filtering numpy python-3.x
Python3/Numpy中是否有任何内置函数可以过滤数组并返回剩下的元素的索引?类似于numpy.argsort的东西用于排序.我的滤波器设置了最小和最大阈值 - 必须滤除低于/高于最小值/最大值的所有值.
我见过Python的函数过滤器,但我没有看到使用它提取索引的方法.
编辑:答案中有很多有用的信息,谢谢!
正如@SvenMarnach指出的那样,面具就足够了:
mask = (min_value < a) & (a < max_value)
Run Code Online (Sandbox Code Playgroud)
现在我必须将此蒙版应用于其他形状相同的阵列a,但不确定最佳方法是什么...
你可以得到一维数组中的元素的索引a是大于min_value比和Les max_value用
indices = ((min_value < a) & (a < max_value)).nonzero()[0]
Run Code Online (Sandbox Code Playgroud)
虽然通常您不需要这些索引,但是使用遮罩可以更有效地工作。
mask = (min_value < a) & (a < max_value)
Run Code Online (Sandbox Code Playgroud)
此遮罩是一个布尔数组,其形状与相同a。
编辑:如果有一个数组b相同的形状的作为a,可以提取的元素b对应于所述True条目mask与
b[mask]
Run Code Online (Sandbox Code Playgroud)
在numpy.where 对数组应用索引之后,该命令将返回它们的索引。例如:
import numpy as np
A = np.array([1,2,3,6,2])
np.where(A>2)
Run Code Online (Sandbox Code Playgroud)
给出:
(array([2, 3]),)
Run Code Online (Sandbox Code Playgroud)
一个更复杂的示例:
A = np.arange(27).reshape(3,3,3)
np.where( (A>10) & (A<15) )
Run Code Online (Sandbox Code Playgroud)
给出:
(array([1, 1, 1, 1]), array([0, 1, 1, 1]), array([2, 0, 1, 2]))
Run Code Online (Sandbox Code Playgroud)
我会同意@SvenMarnach,通常您不需要索引。
| 归档时间: |
|
| 查看次数: |
6764 次 |
| 最近记录: |