在 NumPy 中有一些用于在数组内搜索的函数,通过这些搜索函数可以很方便地在数组中查找到满足某些条件的元素,然后根据数据分析的需要进行相关的操作。常用的数组内搜索函数有 argmin()、nanargmin()、argmax()、nanargmax()、nonzero()、where() 和 extract() 等。
argmin()、nanargmin()、argmax()函数、nanargmax()
argmin() 和 argmax() 函数用于沿指定轴返回最小和最大元素的索引。nanargmin()、nanargmax() 函数用于沿指定轴返回忽略了 NaN 的最小值和最大值的索引。其中,argmin() 函数的格式如下:
numpy.argmin(a[,axis=None])
argmin() 函数有 2 个参数。其中,参数 a 为输入数组;参数 axis 指定沿着哪个轴进行查找操作,参数 axis 为可选项。
nanargmin()、argmax() 和 nanargmax() 函数格式与 argmin() 函数格式相同。
argmin()、nanargmin()、argmax() 函数的示例代码 example1 如下。
# -*- coding: UTF-8 -*-
import numpy as np
arr = np.array([[3,15,2],[30,7,10]])
print ('原数组是:',arr)
#调用argmax() 函数
maxindex= np.argmax(arr)
print('最大值索引',maxindex)
maxindex0 = np.argmax(arr, axis = 0)
print ('沿轴 0 的最大值索引:',maxindex0)
maxindex1 = np.argmax(arr, axis = 1)
print ('沿轴 1 的最大值索引:',maxindex1)
#调用argmin() 函数
minindex = np.argmin(arr)
print ('最小值索引',minindex)
print ('展开数组中的最小值',arr.flatten()[minindex])
minindex0 = np.argmin(arr, axis = 0)
print ('沿轴 0 的最小值索引:',minindex0)
minindex1 = np.argmin(arr, axis = 1)
print ('沿轴 1 的最小值索引:',minindex1)
#调用nanargmin() 函数
arr = np.array([[3,15,2],[30,7,10]], dtype=float)
arr[0,1] = np.nan #设置数组有nan值
print(arr)
minindex = np.nanargmin(arr)
print ('最小值索引',minindex)
print ('展开数组中的最小值',arr.flatten()[minindex]) #输出2.0
nonzero() 函数
nonzero() 函数用于返回输入数组中非零元素的索引。函数的格式如下:
numpy.nonzero(a)
nonzero() 函数中参数 a 为输入数组。
其示例代码如下。
# -*- coding: UTF-8 -*-
import numpy as np
#调用 nonzero() 函数
arr = np.array([[3,0,2],[0,7,1]])
#输出(array([0, 0, 1, 1], dtype=int64), array([0, 2, 1, 2], dtype=int64))
print(np.nonzero(arr))
where() 函数
where() 函数用于返回输入数组中满足给定条件 x 的元素的索引,或者是当给定的条件 x 为 True 时,返回 y 数据,否则返回 z 数据。函数的格式如下:
numpy.where(x[,y,z])
其中,x 为条件表达式;y 为 x 为 True 时的取值;z 为 x 为 False 时的取值。
其示例代码如下。
# -*- coding: UTF-8 -*-
import numpy as np
arr = np.arange(8).reshape(2,4)
x = np.where(arr> 4)
print ('大于 4 的元素的索引:',x)
print ('用索引来获取满足条件的元素',arr[x]))
extract() 函数
extract() 函数用于返回满足任何条件的元素。函数的格式如下:
numpy.extract(x,a)
其中,x 为条件表达式;a 为输入数组。
其示例代码如下。
# -*- coding: UTF-8 -*-
import numpy as np
arr = np.arange(8).reshape(2,4)
# 定义条件
condition = np.mod(arr,2)== 0
print ('按元素的条件值:',condition)
print ('使用条件提取元素:')
print (np.extract(condition,arr))
count_nonzero() 函数
count_nonzero() 函数可以统计 NumPy 数组中非 0 元素的个数。该函数的格式如下:
numpy.count_nonzero (a)
其中,a 为输入数组。
其示例代码如下。
# -*- coding: UTF-8 -*-
import numpy as np
arr= np.arange(8).reshape(2,4)
a = np.count_nonzero(arr)
print(a)