(一)argmax
numpy.argmax(a, axis=None, out=None)
# 返回沿轴的最大值的索引
#3在多次出现最大值的情况下,返回对应于第一次出现的索引。
# 参数
"""
a:数组
axis=None:默认情况下,将数组展平成一维数组,然后返回最大值的索引
"""
#demo
arr = np.arange(9).reshape(3, -1)
print(arr)
print(np.argmax(arr)) # 8 将数组展平成一维数组,然后返回最大值的索引
print(np.argmax(arr, axis=0)) # [2 2 2]
arr = np.array([1, 10, -1, 0, 6, np.nan]).reshape(2,3)
print(arr)
print(np.argmax(arr)) # 5 最大值为np.nan
(二)nanargmax
numpy.nanargmax(a, axis=None)
# 返回指定轴中的最大值的索引,忽略NAN
# 参数
"""
a:数组
axis=None:默认情况下,将数组展平成一维数组,然后返回最大值的索引
"""
#demo
arr = np.array([1, 10, -1, 0, 6, np.nan]).reshape(2,3)
print(arr)
print(np.nanargmax(arr)) # 1
(三)argmin
numpy.argmin(a, axis=None, out=None)
# 返回沿轴线的最小值的索引。
#用法与argmax类似
(四)nanargmin
numpy.nanargmin(a, axis=None)
# 返回指定轴中的最小值的索引,忽略NAN
#用法与argmin类似
(五)argwhere
numpy.argwhere(a)
# 返回满足条件a的元素的索引
#demo
arr = np.array([1, 10, -1, 0, 6,7]).reshape(2, 3)
print(arr)
indexer = np.argwhere(arr > 0)
print(indexer)
"""
[[0 0]
[0 1]
[1 1]
[1 2]]
"""
(六)nonzero
numpy.nonzero(a)
#返回一个由每个维度非零元素索引组成的元组
# 参数
# a:条件
# demo
x = np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]])
indexer = np.nonzero(x)
print(indexer)
# (array([0, 1, 2, 2], dtype=int64), array([0, 1, 0, 1], dtype=int64))
print(x[indexer])
# [3 4 5 6] 根据索引获得元素 与argwhere不同,argwhere无法直接得到元素
print(np.transpose(indexer)) # 同 np.argwhere(x)
# 使用具体条件
print(np.nonzero(x>0))
(七)where
numpy.where(condition[, x, y])
# 根据条件从x或y中选择返回元素。
# 参数
# condition:条件,返回布尔数组,True则为x,False则为y
#demo
a = np.arange(10)
print(np.where(a > 5, a * 10, a))
# [ 0 1 2 3 4 5 60 70 80 90]
a = np.arange(10)
print(np.where(a > 5)) # 返回索引(array([6, 7, 8, 9], dtype=int64),)
print(a > 5) #布尔数组
# [False False False False False False True True True True]
(八)searchsorted
numpy.searchsorted(a, v, side='left', sorter=None)
#在数组a中插入数组v(并不执行插入操作),返回一个下标列表,这个列表指明了v中对应元素应该插入在a中那个位置上
#参数
"""
a : 1-D array_like、
输入数组。当sorter参数为None的时候,a必须为升序数组;
否则,sorter不能为空,存放a中元素的index,用于反映a数组的升序排列方式。
v : array_like
插入a数组的值,可以为单个元素,list或者array。
side : {'left', 'right'}, 默认left
对于left,返回的是与这个元素相等的元素的位置
对于right,返回的是与这个元素相等的元素的下一个位置
没有符合的元素,
如果这个元素比a的最小值还小,就返回0,
如果比a的最大值还大,就返回数组a的长度N
如果这个不存在的元素位于数组a的中间时,返回第一个比它大的那个元素的位置
sorter : 1-D array_like,
存放a数组元素升序排序的index。使用argsort获得
"""
# demo
a = np.array([-1, 0, 1, 4, 10, 19]) # a按照升序
print(np.searchsorted(a, 1)) # 2
print(np.searchsorted(a, 1, side='right')) # 3
print(np.searchsorted(a, 9)) # 4
a = np.array([1, 6, 0, 2, 10, 11]) # a未排序
indexer = np.argsort(a)
print(np.searchsorted(a, 6, sorter=indexer)) # 3
print(np.searchsorted(a, [0, 6, 9], sorter=indexer)) # [0 3 4]
(九)extract
numpy.extract(condition, arr)
# 返回满足某些条件的数组元素。
#参数
"""
condition:条件,返回布尔数组,
arr:与条件大小相同的输入数组
"""
#demo
arr = np.array([1, 10, -1, 0, 6, 7]).reshape(2, 3)
print(np.extract(arr > 0, arr))
print(np.where(arr > 0))