numpy 学习:数组的查找

1,查找最大值或最小值所在的索引

按照特定的轴查找最大值或最小值的索引

numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>)
numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)

举个例子,查找最小值的索引:

>>> a = np.arange(6).reshape(2,3) + 10
>>> a
array([[10, 11, 12],
       [13, 14, 15]])
>>> np.argmin(a)
0
>>> np.argmin(a, axis=0)
array([0, 0, 0])
>>> np.argmin(a, axis=1)
array([0, 0])

2,查找非0元素的索引

numpy.argwhere(a)

举个例子,查找数组中大于0的元素的索引:

>>> x = np.arange(6).reshape(2,3)
>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.argwhere(x>1)
array([[0, 2],
       [1, 0],
       [1, 1],
       [1, 2]])

3,查找操作

查找操作是指按照特定的条件对数组元素进行三值运算

where()函数对每一个元素执行三值运算:当满足condition 时,返回x;否则,返回y

numpy.where(condition[, x, y])

举个例子,对于一维数组,当元素值小于5时,返回原值;当元素值大于5时,乘以10返回:

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])

4,抽取元素

返回满足条件的数据元素,当参数condition为True,返回该位置的元素:

numpy.extract(condition, arr)

举个例子,extract()函数和掩码索引数组的功能相同:

>>> arr = np.arange(12).reshape((3, 4))
>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> condition = np.mod(arr, 3)==0
>>> condition
array([[ True, False, False,  True],
       [False, False,  True, False],
       [False,  True, False, False]])
>>> np.extract(condition, arr)
array([0, 3, 6, 9])
If condition is boolean:

>>>
>>> arr[condition]
array([0, 3, 6, 9])

参考文档:

posted @ 2022-01-05 14:18  悦光阴  阅读(727)  评论(0编辑  收藏  举报