首页 > 编程笔记

Numpy where数组查询

在查询数组的过程中,最常用到的是 where 方法,该方法返回的是符合条件的值的坐标。另外,还可以通过 argmax 与 argmin 方法获得数组中最大值和最小值的坐标,注意 axis 参数的设定。示例代码如下。
In [1]: import numpy as np
In [2]: a = np.array([[1,2,3,4],
   ...:               [5,6,7,8],
   ...:               [9,10,11,12],
   ...:               [13,14,15,16]]) 
where 方法用来返回符合条件的坐标,比如我们想要获得大于 7 的所有值的坐标,可以看出 8 是第一个比 7 大的数字,所以数字 8 的坐标 [1,3] 会被返回,同样的道理, 9 的坐标 [2,0] 也会被返回。

这里需要注意的是,返回的形式是将所有元素的横坐标放在一个数组里,然后将所有元素的纵坐标放在另一个数组里。这种做法的好处是方便以后取值。
In [3]: index=np.where(a > 7)
In [4]: index
Out[4]: 
(array([1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64),
array([3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) 
可以直接将上述结果用索引方法索引出来。
In [5]: a[index]
Out[5]: array([ 8,  9, 10, 11, 12, 13, 14, 15, 16]) 

优秀文章